{ "name": "gsp", "rules": { "document": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_toplevel" } }, "_toplevel": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "comment" }, { "type": "SYMBOL", "name": "node" } ] }, "comment": { "type": "SEQ", "members": [ { "type": "STRING", "value": "/" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "ident" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "attrs", "content": { "type": "SYMBOL", "name": "attr_list" } }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "node_body" } } ] }, "node": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "ident" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "attrs", "content": { "type": "SYMBOL", "name": "attr_list" } }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "node_body" } } ] }, "node_body": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_toplevel" } }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "STRING", "value": "=" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "text" }, { "type": "BLANK" } ] } ] } ] }, { "type": "STRING", "value": "}" } ] }, "attr_list": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attr" }, { "type": "SYMBOL", "name": "id_attr" }, { "type": "SYMBOL", "name": "class_attr" } ] } }, "attr": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "ident" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "string" } } ] }, { "type": "BLANK" } ] } ] }, "id_attr": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "FIELD", "name": "name", "content": { "type": "ALIAS", "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", "flags": "u" } }, "named": true, "value": "ident" } } ] }, "class_attr": { "type": "SEQ", "members": [ { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "name", "content": { "type": "ALIAS", "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", "flags": "u" } }, "named": true, "value": "ident" } } ] }, "text": { "type": "REPEAT1", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "(\\\\[@}\\\\]|[^@}\\\\])+" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "@" }, { "type": "SYMBOL", "name": "_toplevel" } ] } ] } }, "ident": { "type": "PATTERN", "value": "\\p{XID_Start}[-\\p{XID_Continue}]*", "flags": "u" }, "string": { "type": "PATTERN", "value": "\"(\\\\[\"\\\\]|[^\"\\\\])+\"" } }, "extras": [ { "type": "PATTERN", "value": "\\p{Pattern_White_Space}+", "flags": "u" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }