{ "name": "cmake", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "command_invocation" } }, "line_ending": { "type": "SYMBOL", "name": "newline" }, "seperation": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "space" }, { "type": "SYMBOL", "name": "line_ending" } ] }, "space": { "type": "PATTERN", "value": "[ \\t]+" }, "newline": { "type": "PATTERN", "value": "\\n+" }, "foreach": { "type": "PATTERN", "value": "[fF][oO][rR][eE][aA][cC][hH]" }, "endforeach": { "type": "PATTERN", "value": "[eE][nN][dD][fF][oO][rR][eE][aA][cC][hH]" }, "identifier": { "type": "PATTERN", "value": "[A-Za-z_][A-Za-z0-9_]*" }, "integer": { "type": "PATTERN", "value": "[+-]*\\d+" }, "escape_sequence": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_escape_identity" }, { "type": "SYMBOL", "name": "_escape_encoded" }, { "type": "SYMBOL", "name": "_escape_semicolon" } ] }, "_escape_identity": { "type": "PATTERN", "value": "\\\\[^A-Za-z0-9;]" }, "_escape_encoded": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "\\t" }, { "type": "STRING", "value": "\\r" }, { "type": "STRING", "value": "\\n" } ] }, "_escape_semicolon": { "type": "STRING", "value": ";" }, "variable": { "type": "PREC_LEFT", "value": 0, "content": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[a-zA-Z0-9/_.+-]" }, { "type": "SYMBOL", "name": "escape_sequence" } ] } } }, "variable_ref": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "normal_var" }, { "type": "SYMBOL", "name": "env_var" }, { "type": "SYMBOL", "name": "cache_var" } ] }, "normal_var": { "type": "SEQ", "members": [ { "type": "STRING", "value": "${" }, { "type": "SYMBOL", "name": "variable" }, { "type": "STRING", "value": "}" } ] }, "env_var": { "type": "SEQ", "members": [ { "type": "STRING", "value": "$ENV{" }, { "type": "SYMBOL", "name": "variable" }, { "type": "STRING", "value": "}" } ] }, "cache_var": { "type": "SEQ", "members": [ { "type": "STRING", "value": "$CACHE{" }, { "type": "SYMBOL", "name": "variable" }, { "type": "STRING", "value": "}" } ] }, "argument": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "bracket_argument" }, { "type": "SYMBOL", "name": "quoted_argument" }, { "type": "SYMBOL", "name": "unquoted_argument" } ] }, "bracket_argument": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_bracket_open" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "bracket_content" }, { "type": "BLANK" } ] }, { "type": "SYMBOL", "name": "_bracket_close" } ] }, "_bracket_open": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "REPEAT", "content": { "type": "STRING", "value": "=" } }, { "type": "STRING", "value": "[" } ] }, "bracket_content": { "type": "REPEAT1", "content": { "type": "PATTERN", "value": "[^\\]]" } }, "_bracket_close": { "type": "SEQ", "members": [ { "type": "STRING", "value": "]" }, { "type": "REPEAT", "content": { "type": "STRING", "value": "=" } }, { "type": "STRING", "value": "]" } ] }, "quoted_argument": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "quoted_element" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "\"" } ] }, "quoted_element": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "variable_ref" }, { "type": "PATTERN", "value": "[^\\\\\"]" }, { "type": "SYMBOL", "name": "escape_sequence" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "\\" }, { "type": "SYMBOL", "name": "newline" } ] } ] } }, "unquoted_argument": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "variable_ref" }, { "type": "PATTERN", "value": "[^ ()#\\\"\\\\]" }, { "type": "SYMBOL", "name": "escape_sequence" } ] } }, "arguments": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "argument" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_seperated_arguments" } } ] }, "_seperated_arguments": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "seperation" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "argument" }, { "type": "BLANK" } ] } ] } }, "foreach_command": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "foreach" }, { "type": "STRING", "value": "(" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "seperation" } }, { "type": "SYMBOL", "name": "variable" }, { "type": "STRING", "value": ")" } ] }, "endforeach_command": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "endforeach" }, { "type": "STRING", "value": "(" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "seperation" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "variable" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "normal_command": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "(" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "seperation" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "arguments" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "command_invocation": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "normal_command" }, { "type": "SYMBOL", "name": "foreach_command" }, { "type": "SYMBOL", "name": "endforeach_command" } ] } }, "extras": [ { "type": "PATTERN", "value": "\\s" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }