54 lines
1.1 KiB
JSON
54 lines
1.1 KiB
JSON
{
|
|
"name": "nested_inlined_rules",
|
|
|
|
"extras": [
|
|
{"type": "PATTERN", "value": "\\s"}
|
|
],
|
|
|
|
"inline": [
|
|
"top_level_item",
|
|
"statement"
|
|
],
|
|
|
|
"rules": {
|
|
"program": {
|
|
"type": "REPEAT1",
|
|
"content": {"type": "SYMBOL", "name": "top_level_item"}
|
|
},
|
|
|
|
"top_level_item": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "statement"},
|
|
{"type": "STRING", "value": "!"}
|
|
]
|
|
},
|
|
|
|
"statement": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "expression_statement"},
|
|
{"type": "SYMBOL", "name": "return_statement"}
|
|
]
|
|
},
|
|
|
|
"return_statement": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "STRING", "value": "return"},
|
|
{"type": "SYMBOL", "name": "number"},
|
|
{"type": "STRING", "value": ";"}
|
|
]
|
|
},
|
|
|
|
"expression_statement": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "number"},
|
|
{"type": "STRING", "value": ";"}
|
|
]
|
|
},
|
|
|
|
"number": {"type": "PATTERN", "value": "\\d+"}
|
|
}
|
|
}
|