{ "name": "html", "rules": { "fragment": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_node" } }, "_node": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "text" }, { "type": "SYMBOL", "name": "element" }, { "type": "SYMBOL", "name": "void_element" } ] }, "element": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "start_tag" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_node" } }, { "type": "SYMBOL", "name": "end_tag" } ] }, "void_element": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "void_start_tag" }, { "type": "SYMBOL", "name": "self_closing_tag" } ] }, "start_tag": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "tag_name" }, "named": true, "value": "tag_name" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "attribute" } }, { "type": "STRING", "value": ">" } ] }, "void_start_tag": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "void_tag_name" }, "named": true, "value": "tag_name" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "attribute" } }, { "type": "STRING", "value": ">" } ] }, "self_closing_tag": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "tag_name" }, { "type": "SYMBOL", "name": "void_tag_name" } ] }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "attribute" } }, { "type": "STRING", "value": "/" }, { "type": "STRING", "value": ">" } ] }, "attribute": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_attribute_part" }, "named": true, "value": "attribute_name" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "=" }, { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_attribute_part" }, "named": true, "value": "attribute_value" }, { "type": "SYMBOL", "name": "quoted_attribute_value" } ] } ] }, { "type": "BLANK" } ] } ] }, "_attribute_part": { "type": "PATTERN", "value": "[^<>\"'\\/=\\s]+" }, "quoted_attribute_value": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "'" }, { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "PATTERN", "value": "[^']+" }, "named": true, "value": "attribute_value" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "'" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "CHOICE", "members": [ { "type": "ALIAS", "content": { "type": "PATTERN", "value": "[^\"]+" }, "named": true, "value": "attribute_value" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "\"" } ] } ] }, "end_tag": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<" }, { "type": "STRING", "value": "/" }, { "type": "SYMBOL", "name": "tag_name" }, { "type": "STRING", "value": ">" } ] }, "tag_name": { "type": "PATTERN", "value": "[a-zA-Z\\-]+" }, "void_tag_name": { "type": "TOKEN", "content": { "type": "PREC", "value": 1, "content": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "area" }, { "type": "STRING", "value": "base" }, { "type": "STRING", "value": "basefont" }, { "type": "STRING", "value": "bgsound" }, { "type": "STRING", "value": "br" }, { "type": "STRING", "value": "col" }, { "type": "STRING", "value": "command" }, { "type": "STRING", "value": "embed" }, { "type": "STRING", "value": "frame" }, { "type": "STRING", "value": "hr" }, { "type": "STRING", "value": "image" }, { "type": "STRING", "value": "img" }, { "type": "STRING", "value": "input" }, { "type": "STRING", "value": "isindex" }, { "type": "STRING", "value": "keygen" }, { "type": "STRING", "value": "link" }, { "type": "STRING", "value": "menuitem" }, { "type": "STRING", "value": "meta" }, { "type": "STRING", "value": "nextid" }, { "type": "STRING", "value": "param" }, { "type": "STRING", "value": "source" }, { "type": "STRING", "value": "track" }, { "type": "STRING", "value": "wbr" } ] } } }, "text": { "type": "PATTERN", "value": "[^<>]+" } }, "extras": [ { "type": "PATTERN", "value": "\\s" } ], "conflicts": [], "externals": [], "inline": [] }