diff options
| -rw-r--r-- | src/grammar.json | 44 | ||||
| -rw-r--r-- | src/node-types.json | 42 | ||||
| -rw-r--r-- | src/parser.c | 45 | ||||
| -rw-r--r-- | test/corpus/document.txt | 12 | 
4 files changed, 78 insertions, 65 deletions
diff --git a/src/grammar.json b/src/grammar.json index 8fbe7dc..5132fed 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -215,17 +215,21 @@            "value": "#"          },          { -          "type": "ALIAS", +          "type": "FIELD", +          "name": "name",            "content": { -            "type": "IMMEDIATE_TOKEN", +            "type": "ALIAS",              "content": { -              "type": "PATTERN", -              "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", -              "flags": "u" -            } -          }, -          "named": true, -          "value": "ident" +              "type": "IMMEDIATE_TOKEN", +              "content": { +                "type": "PATTERN", +                "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", +                "flags": "u" +              } +            }, +            "named": true, +            "value": "ident" +          }          }        ]      }, @@ -237,17 +241,21 @@            "value": "."          },          { -          "type": "ALIAS", +          "type": "FIELD", +          "name": "name",            "content": { -            "type": "IMMEDIATE_TOKEN", +            "type": "ALIAS",              "content": { -              "type": "PATTERN", -              "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", -              "flags": "u" -            } -          }, -          "named": true, -          "value": "ident" +              "type": "IMMEDIATE_TOKEN", +              "content": { +                "type": "PATTERN", +                "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", +                "flags": "u" +              } +            }, +            "named": true, +            "value": "ident" +          }          }        ]      }, diff --git a/src/node-types.json b/src/node-types.json index 806fb1f..d255c74 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -51,16 +51,17 @@    {      "type": "class_attr",      "named": true, -    "fields": {}, -    "children": { -      "multiple": false, -      "required": true, -      "types": [ -        { -          "type": "ident", -          "named": true -        } -      ] +    "fields": { +      "name": { +        "multiple": false, +        "required": true, +        "types": [ +          { +            "type": "ident", +            "named": true +          } +        ] +      }      }    },    { @@ -121,16 +122,17 @@    {      "type": "id_attr",      "named": true, -    "fields": {}, -    "children": { -      "multiple": false, -      "required": true, -      "types": [ -        { -          "type": "ident", -          "named": true -        } -      ] +    "fields": { +      "name": { +        "multiple": false, +        "required": true, +        "types": [ +          { +            "type": "ident", +            "named": true +          } +        ] +      }      }    },    { diff --git a/src/parser.c b/src/parser.c index 36ba66a..b86a440 100644 --- a/src/parser.c +++ b/src/parser.c @@ -13,7 +13,7 @@  #define EXTERNAL_TOKEN_COUNT 0  #define FIELD_COUNT 4  #define MAX_ALIAS_SEQUENCE_LENGTH 4 -#define PRODUCTION_ID_COUNT 8 +#define PRODUCTION_ID_COUNT 9  enum ts_symbol_identifiers {    anon_sym_SLASH = 1, @@ -226,11 +226,12 @@ static const char * const ts_field_names[] = {  static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {    [1] = {.index = 0, .length = 1},    [2] = {.index = 1, .length = 2}, -  [3] = {.index = 3, .length = 2}, -  [4] = {.index = 5, .length = 2}, -  [5] = {.index = 7, .length = 3}, -  [6] = {.index = 10, .length = 2}, -  [7] = {.index = 12, .length = 3}, +  [3] = {.index = 3, .length = 1}, +  [4] = {.index = 4, .length = 2}, +  [5] = {.index = 6, .length = 2}, +  [6] = {.index = 8, .length = 3}, +  [7] = {.index = 11, .length = 2}, +  [8] = {.index = 13, .length = 3},  };  static const TSFieldMapEntry ts_field_map_entries[] = { @@ -240,19 +241,21 @@ static const TSFieldMapEntry ts_field_map_entries[] = {      {field_body, 1},      {field_name, 0},    [3] = +    {field_name, 1}, +  [4] =      {field_body, 2},      {field_name, 1}, -  [5] = +  [6] =      {field_attrs, 1},      {field_body, 2}, -  [7] = +  [8] =      {field_attrs, 1},      {field_body, 2},      {field_name, 0}, -  [10] = +  [11] =      {field_name, 0},      {field_value, 2}, -  [12] = +  [13] =      {field_attrs, 2},      {field_body, 3},      {field_name, 1}, @@ -1311,31 +1314,31 @@ static const TSParseActionEntry ts_parse_actions[] = {    [68] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16),    [70] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28),    [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 4, 0, 0), -  [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_id_attr, 2, 0, 0), -  [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_attr, 2, 0, 0), +  [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_id_attr, 2, 0, 3), +  [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_class_attr, 2, 0, 3),    [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 2, 0, 2), -  [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 3), +  [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 4),    [82] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0),    [84] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0), SHIFT_REPEAT(24),    [87] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0), SHIFT_REPEAT(16), -  [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 4), +  [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 5),    [92] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 2, 0, 0), -  [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 3, 0, 5), +  [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node, 3, 0, 6),    [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_node_body, 3, 0, 0),    [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2, 0, 1),    [100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_text, 1, 0, 0),    [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), -  [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr, 3, 0, 6), -  [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 4, 0, 7), -  [108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 3, 0, 5), -  [110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 4, 0, 7), +  [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr, 3, 0, 7), +  [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 4, 0, 8), +  [108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 3, 0, 6), +  [110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 4, 0, 8),    [112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node_body, 4, 0, 0),    [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_text_repeat1, 2, 0, 0),    [116] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 2, 0, 1),    [118] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node, 2, 0, 2),    [120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node_body, 2, 0, 0), -  [122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3, 0, 3), -  [124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3, 0, 4), +  [122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3, 0, 4), +  [124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_comment, 3, 0, 5),    [126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_node_body, 3, 0, 0),    [128] = {.entry = {.count = 1, .reusable = true}},  ACCEPT_INPUT(),    [130] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), diff --git a/test/corpus/document.txt b/test/corpus/document.txt index 5a8f304..61f7699 100644 --- a/test/corpus/document.txt +++ b/test/corpus/document.txt @@ -105,14 +105,14 @@ html lang="en" {              name: (ident)              attrs: (attr_list                (id_attr -                (ident))) +                name: (ident)))              body: (node_body                (text)))            (node              name: (ident)              attrs: (attr_list                (class_attr -                (ident))) +                name: (ident)))              body: (node_body                (text)))            (comment @@ -130,11 +130,11 @@ html lang="en" {              name: (ident)              attrs: (attr_list                (id_attr -                (ident)) +                name: (ident))                (class_attr -                (ident)) +                name: (ident))                (class_attr -                (ident)) +                name: (ident))                (attr                  name: (ident)                  value: (string)) @@ -151,6 +151,6 @@ html lang="en" {                    name: (ident)                    attrs: (attr_list                      (id_attr -                      (ident))) +                      name: (ident)))                    body: (node_body                      (text)))))))))))  |