{ "name": "d2", "word": "_identifier", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_root_definition" } }, "_root_definition": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_eol" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_root_attribute" }, "named": true, "value": "attribute" }, { "type": "SYMBOL", "name": "shape" }, { "type": "SYMBOL", "name": "container" }, { "type": "SYMBOL", "name": "connection" } ] }, { "type": "SYMBOL", "name": "_end" } ] } ] }, "connection": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_connection_path" }, { "type": "REPEAT1", "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "arrow" }, { "type": "SYMBOL", "name": "_connection_path" } ] } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_colon" }, { "type": "SYMBOL", "name": "label" } ] }, { "type": "BLANK" } ] } ] }, "_connection_path": { "type": "SEQ", "members": [ { "type": "REPEAT", "content": { "type": "PREC", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "shape_key" }, "named": true, "value": "container_key" }, { "type": "SYMBOL", "name": "dot" } ] } } }, { "type": "SYMBOL", "name": "shape_key" } ] }, "container": { "type": "PREC", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "shape_key" }, "named": true, "value": "container_key" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "dot" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "shape" }, { "type": "SYMBOL", "name": "container" } ] } ] }, { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_colon" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "label" }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_container_block" }, "named": true, "value": "block" } ] }, { "type": "BLANK" } ] } ] } ] } ] } ] } }, "_container_block": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_container_block_definition" } }, { "type": "STRING", "value": "}" } ] }, "_container_block_definition": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_eol" }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "shape" }, { "type": "SYMBOL", "name": "container" }, { "type": "SYMBOL", "name": "connection" }, { "type": "SYMBOL", "name": "_shape_attribute" } ] }, { "type": "SYMBOL", "name": "_end" } ] } ] }, "shape": { "type": "PREC", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "shape_key" }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "dot" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_style_attribute" }, "named": true, "value": "attribute" } ] }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_colon" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "label" }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] } ] } ] }, { "type": "BLANK" } ] } ] } }, "shape_key": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_identifier" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_dash" }, { "type": "BLANK" } ] } ] } ] }, "_identifier": { "type": "TOKEN", "content": { "type": "PREC", "value": 0, "content": { "type": "PATTERN", "value": "\\-?([\\w\\d]+|([\\w\\d]+( +|\\-)[\\w\\d]+)+)" } } }, "_root_attribute": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_root_attr_key" }, "named": true, "value": "attr_key" }, { "type": "SYMBOL", "name": "_colon" }, { "type": "SYMBOL", "name": "attr_value" } ] }, "_root_attr_key": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "direction" }, { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "shape" }, { "type": "STRING", "value": "label" }, { "type": "STRING", "value": "constraint" }, { "type": "STRING", "value": "icon" }, { "type": "STRING", "value": "style" }, { "type": "SYMBOL", "name": "_common_style_attr_key" }, { "type": "SYMBOL", "name": "_text_attr_key" } ] }, "named": true, "value": "reserved" } ] }, "_shape_attribute": { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_base_shape_attribute" }, "named": true, "value": "attribute" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_style_attribute" }, "named": true, "value": "attribute" } ] }, "_base_shape_attribute": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_shape_attr_key" }, "named": true, "value": "attr_key" }, { "type": "SYMBOL", "name": "_colon" }, { "type": "SYMBOL", "name": "attr_value" } ] }, "_shape_attr_key": { "type": "PREC", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "shape" }, { "type": "STRING", "value": "label" }, { "type": "STRING", "value": "constraint" }, { "type": "STRING", "value": "icon" }, { "type": "STRING", "value": "width" }, { "type": "STRING", "value": "height" } ] } }, "_style_attribute": { "type": "PREC", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "STRING", "value": "style" }, "named": true, "value": "attr_key" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "dot" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_inner_style_attribute" }, "named": true, "value": "attribute" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_colon" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_style_attribute_block" }, "named": true, "value": "block" } ] } ] } ] } }, "_style_attribute_block": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_eol" }, { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_inner_style_attribute" }, "named": true, "value": "attribute" }, { "type": "SYMBOL", "name": "_end" } ] } ] } }, { "type": "STRING", "value": "}" } ] }, "_inner_style_attribute": { "type": "PREC", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_style_attr_key" }, "named": true, "value": "attr_key" }, { "type": "SYMBOL", "name": "_colon" }, { "type": "SYMBOL", "name": "attr_value" } ] } }, "_style_attr_key": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_common_style_attr_key" }, { "type": "STRING", "value": "3d" } ] }, "_common_style_attr_key": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "opacity" }, { "type": "STRING", "value": "fill" }, { "type": "STRING", "value": "stroke" }, { "type": "STRING", "value": "stroke-width" }, { "type": "STRING", "value": "stroke-dash" }, { "type": "STRING", "value": "border-radius" }, { "type": "STRING", "value": "font-color" }, { "type": "STRING", "value": "shadow" }, { "type": "STRING", "value": "multiple" }, { "type": "STRING", "value": "animated" }, { "type": "STRING", "value": "link" } ] }, "_text_attr_key": { "type": "STRING", "value": "near" }, "_connection_attr_key": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "source-arrowhead" }, { "type": "STRING", "value": "target-arrowhead" } ] }, "label": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "_unquoted_string" } ] }, "attr_value": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "_unquoted_string" } ] } ] }, "_dash": { "type": "IMMEDIATE_TOKEN", "content": { "type": "STRING", "value": "-" } }, "_colon": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" } ] }, "arrow": { "type": "TOKEN", "content": { "type": "PREC", "value": 0, "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "-+>" }, { "type": "PATTERN", "value": "--+" }, { "type": "PATTERN", "value": "<-+" }, { "type": "PATTERN", "value": "<-+>" } ] } } }, "dot": { "type": "TOKEN", "content": { "type": "STRING", "value": "." } }, "_unquoted_string": { "type": "TOKEN", "content": { "type": "PREC", "value": 0, "content": { "type": "PATTERN", "value": "[\\w\\-?!]([^'\"`\\n;{}]*[\\w\\-?!])?" } } }, "string": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "'" }, { "type": "REPEAT", "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "[^'\\n]+" } } }, { "type": "STRING", "value": "'" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "[^\"\\n]+" } } }, { "type": "STRING", "value": "\"" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "`" }, { "type": "REPEAT", "content": { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "[^`\\n]+" } } }, { "type": "STRING", "value": "`" } ] } ] }, "line_comment": { "type": "TOKEN", "content": { "type": "PREC", "value": -2, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "PATTERN", "value": ".*" } ] } } }, "_eol": { "type": "TOKEN", "content": { "type": "PREC", "value": -1, "content": { "type": "STRING", "value": "\n" } } }, "_end": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": ";" }, { "type": "SYMBOL", "name": "_eol" } ] } ] } }, "extras": [ { "type": "PATTERN", "value": "[ \\f\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]" }, { "type": "SYMBOL", "name": "line_comment" } ], "conflicts": [ [ "_connection_path", "container" ] ], "precedences": [], "externals": [], "inline": [], "supertypes": [] }