Convert more fixture grammars from JSON to JS

This commit is contained in:
Max Brunsfeld 2021-12-30 16:27:02 -08:00
parent 622359b400
commit 8df0b8de7e
6 changed files with 51 additions and 153 deletions

View file

@ -0,0 +1,28 @@
module.exports = grammar({
name: "inlined_aliased_rules",
extras: $ => [/\s/],
inline: $ => [$.expression],
rules: {
statement: $ => seq($.expression, ";"),
expression: $ =>
choice(
$.call_expression,
$.member_expression,
alias($.identifier, $.variable_name),
),
call_expression: $ => prec.left(seq($.expression, "(", $.expression, ")")),
member_expression: $ =>
prec.left(
1,
seq($.expression, ".", alias($.identifier, $.property_name)),
),
identifier: $ => /[a-z]+/,
},
});

View file

@ -1,75 +0,0 @@
{
"name": "inlined_aliased_rules",
"extras": [
{"type": "PATTERN", "value": "\\s"}
],
"inline": [
"expression"
],
"rules": {
"statement": {
"type": "SEQ",
"members": [
{"type": "SYMBOL", "name": "expression"},
{"type": "STRING", "value": ";"}
]
},
"expression": {
"type": "CHOICE",
"members": [
{"type": "SYMBOL", "name": "call_expression"},
{"type": "SYMBOL", "name": "member_expression"},
{
"type": "ALIAS",
"value": "variable_name",
"named": true,
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"call_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{"type": "SYMBOL", "name": "expression"},
{"type": "STRING", "value": "("},
{"type": "SYMBOL", "name": "expression"},
{"type": "STRING", "value": ")"}
]
}
},
"member_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{"type": "SYMBOL", "name": "expression"},
{"type": "STRING", "value": "."},
{
"type": "ALIAS",
"named": true,
"value": "property_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"identifier": {"type": "PATTERN", "value": "[a-z]+"}
}
}

View file

@ -0,0 +1,15 @@
module.exports = grammar({
name: "inverted_external_token",
externals: $ => [$.line_break],
extras: $ => [/\s/],
rules: {
program: $ => repeat($.statement),
statement: $ => seq($._expression, $.line_break),
_expression: $ => choice($.identifier, $.member_expression),
member_expression: $ => prec.left(seq($._expression, ".", $.identifier)),
identifier: $ => /[a-z]+/,
},
});

View file

@ -1,55 +0,0 @@
{
"name": "inverted_external_token",
"externals": [
{"type": "SYMBOL", "name": "line_break"}
],
"extras": [
{"type": "PATTERN", "value": "\\s"}
],
"rules": {
"program": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
"statement": {
"type": "SEQ",
"members": [
{"type": "SYMBOL", "name": "_expression"},
{"type": "SYMBOL", "name": "line_break"}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{"type": "SYMBOL", "name": "identifier"},
{"type": "SYMBOL", "name": "member_expression"}
]
},
"member_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{"type": "SYMBOL", "name": "_expression"},
{"type": "STRING", "value": "."},
{"type": "SYMBOL", "name": "identifier"}
]
}
},
"identifier": {
"type": "PATTERN",
"value": "[a-z]+"
}
}
}

View file

@ -0,0 +1,8 @@
module.exports = grammar({
name: "invisible_start_rule",
rules: {
_value: $ => choice($.a, $.b),
a: $ => "a",
b: $ => "b",
},
});

View file

@ -1,23 +0,0 @@
{
"name": "invisible_start_rule",
"rules": {
"_value": {
"type": "CHOICE",
"members": [
{"type": "SYMBOL", "name": "a"},
{"type": "SYMBOL", "name": "b"}
]
},
"a": {
"type": "STRING",
"value": "a"
},
"b": {
"type": "STRING",
"value": "b"
}
}
}