{ "name": "bp", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_definition" } }, "_definition": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "assignment" }, { "type": "SYMBOL", "name": "module" } ] }, "comment": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "//" }, { "type": "PATTERN", "value": "(\\\\+(.|\\r?\\n)|[^\\\\\\n])*" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "/*" }, { "type": "PATTERN", "value": "[^*]*\\*+([^/*][^*]*\\*+)*" }, { "type": "STRING", "value": "/" } ] } ] }, "assignment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "=" }, { "type": "STRING", "value": "+=" } ] }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] }, "module": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_old_module" }, { "type": "SYMBOL", "name": "_new_module" } ] }, "_old_module": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_colon_property" } }, "named": true, "value": "property" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_colon_property" } }, "named": true, "value": "property" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "_new_module": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_equal_property" } }, "named": true, "value": "property" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_equal_property" } }, "named": true, "value": "property" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "_expr": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "boolean_literal" }, { "type": "SYMBOL", "name": "integer_literal" }, { "type": "SYMBOL", "name": "_string_literal" }, { "type": "SYMBOL", "name": "select_expression" }, { "type": "SYMBOL", "name": "list_expression" }, { "type": "SYMBOL", "name": "map_expression" }, { "type": "SYMBOL", "name": "binary_expression" } ] }, "identifier": { "type": "PATTERN", "value": "[_\\p{XID_Start}][_\\p{XID_Continue}]*" }, "boolean_literal": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "true" }, { "type": "STRING", "value": "false" } ] }, "integer_literal": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] }, { "type": "PATTERN", "value": "[0-9]+" } ] }, "_string_literal": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "raw_string_literal" }, { "type": "SYMBOL", "name": "interpreted_string_literal" } ] }, "raw_string_literal": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "`" }, { "type": "PATTERN", "value": "[^`]+" }, { "type": "STRING", "value": "`" } ] } }, "interpreted_string_literal": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[^\"\\n\\\\]+" }, { "type": "SYMBOL", "name": "escape_sequence" } ] } }, { "type": "IMMEDIATE_TOKEN", "content": { "type": "STRING", "value": "\"" } } ] }, "escape_sequence": { "type": "IMMEDIATE_TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\\" }, { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[^xuU]" }, { "type": "PATTERN", "value": "\\d{2,3}" }, { "type": "PATTERN", "value": "x[0-9a-fA-F]{2,}" }, { "type": "PATTERN", "value": "u[0-9a-fA-F]{4}" }, { "type": "PATTERN", "value": "U[0-9a-fA-F]{8}" } ] } ] } }, "select_expression": { "type": "SEQ", "members": [ { "type": "STRING", "value": "select" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "select_value" }, { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "select_cases" }, { "type": "STRING", "value": ")" } ] }, "select_value": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "condition" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "condition" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "condition" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ")" } ] } ] }, "condition": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "(" }, { "type": "FIELD", "name": "arguments", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_string_literal" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_string_literal" } ] } } ] }, { "type": "BLANK" } ] } }, { "type": "STRING", "value": ")" } ] }, "select_cases": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "select_case" }, { "type": "STRING", "value": "," } ] } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "select_case": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "pattern", "content": { "type": "SYMBOL", "name": "select_pattern" } }, { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_case_value" } } ] }, "select_pattern": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_select_pattern" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_select_pattern" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_select_pattern" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ")" } ] } ] }, "_select_pattern": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_string_literal" }, { "type": "SYMBOL", "name": "boolean_literal" }, { "type": "ALIAS", "content": { "type": "STRING", "value": "default" }, "named": true, "value": "default" } ] }, "_case_value": { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "unset" }, "named": true, "value": "unset" }, { "type": "SYMBOL", "name": "_expr" } ] }, "list_expression": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "element", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "FIELD", "name": "element", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "]" } ] }, "map_expression": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_colon_property" } }, "named": true, "value": "property" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "FIELD", "name": "property", "content": { "type": "SYMBOL", "name": "_colon_property" } }, "named": true, "value": "property" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "binary_expression": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expr" } }, { "type": "FIELD", "name": "operator", "content": { "type": "ALIAS", "content": { "type": "STRING", "value": "+" }, "named": true, "value": "operator" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, "_colon_property": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expr" } } ] }, "_equal_property": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expr" } } ] } }, "extras": [ { "type": "PATTERN", "value": "\\s+" }, { "type": "SYMBOL", "name": "comment" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }