69 lines
1.6 KiB
JSON
69 lines
1.6 KiB
JSON
{
|
|
"name": "uses_current_column",
|
|
|
|
"externals": [
|
|
{"type": "SYMBOL", "name": "_indent"},
|
|
{"type": "SYMBOL", "name": "_dedent"},
|
|
{"type": "SYMBOL", "name": "_newline"}
|
|
],
|
|
|
|
"extras": [
|
|
{"type": "PATTERN", "value": "\\s"}
|
|
],
|
|
|
|
"rules": {
|
|
"block": {
|
|
"type": "REPEAT1",
|
|
"content": {"type": "SYMBOL", "name": "_statement"}
|
|
},
|
|
|
|
"_statement": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "_expression"},
|
|
{"type": "SYMBOL", "name": "_newline"}
|
|
]
|
|
},
|
|
|
|
"_expression": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "do_expression"},
|
|
{"type": "SYMBOL", "name": "binary_expression"},
|
|
{"type": "SYMBOL", "name": "identifier"}
|
|
]
|
|
},
|
|
|
|
"do_expression": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "STRING", "value": "do"},
|
|
{"type": "SYMBOL", "name": "_indent"},
|
|
{"type": "SYMBOL", "name": "block"},
|
|
{"type": "SYMBOL", "name": "_dedent"}
|
|
]
|
|
},
|
|
|
|
"binary_expression": {
|
|
"type": "PREC_LEFT",
|
|
"value": 1,
|
|
"content": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "SYMBOL", "name": "_expression"},
|
|
{
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{"type": "STRING", "value": "="},
|
|
{"type": "STRING", "value": "+"},
|
|
{"type": "STRING", "value": "-"}
|
|
]
|
|
},
|
|
{"type": "SYMBOL", "name": "_expression"}
|
|
]
|
|
}
|
|
},
|
|
|
|
"identifier": {"type": "PATTERN", "value": "\\w+"}
|
|
}
|
|
}
|