<lexer> <config> <name>HTML</name> <alias>html</alias> <filename>*.html</filename> <filename>*.htm</filename> <filename>*.xhtml</filename> <filename>*.xslt</filename> <mime_type>text/html</mime_type> <mime_type>application/xhtml+xml</mime_type> <case_insensitive>true</case_insensitive> <dot_all>true</dot_all> <not_multiline>true</not_multiline> </config> <rules> <state name="script-content"> <rule pattern="(<)(\s*)(/)(\s*)(script)(\s*)(>)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> <token type="Text"/> <token type="Punctuation"/> </bygroups> <pop depth="1"/> </rule> <rule pattern=".+?(?=<\s*/\s*script\s*>)"> <using lexer="Javascript"/> </rule> </state> <state name="style-content"> <rule pattern="(<)(\s*)(/)(\s*)(style)(\s*)(>)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> <token type="Text"/> <token type="Punctuation"/> </bygroups> <pop depth="1"/> </rule> <rule pattern=".+?(?=<\s*/\s*style\s*>)"> <using lexer="CSS"/> </rule> </state> <state name="attr"> <rule pattern="".*?""> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="'.*?'"> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="[^\s>]+"> <token type="LiteralString"/> <pop depth="1"/> </rule> </state> <state name="root"> <rule pattern="[^<&]+"> <token type="Text"/> </rule> <rule pattern="&\S*?;"> <token type="NameEntity"/> </rule> <rule pattern="\<\!\[CDATA\[.*?\]\]\>"> <token type="CommentPreproc"/> </rule> <rule pattern="<!--"> <token type="Comment"/> <push state="comment"/> </rule> <rule pattern="<\?.*?\?>"> <token type="CommentPreproc"/> </rule> <rule pattern="<![^>]*>"> <token type="CommentPreproc"/> </rule> <rule pattern="(<)(\s*)(script)(\s*)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> <token type="Text"/> </bygroups> <push state="script-content" state="tag"/> </rule> <rule pattern="(<)(\s*)(style)(\s*)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> <token type="Text"/> </bygroups> <push state="style-content" state="tag"/> </rule> <rule pattern="(<)(\s*)([\w:.-]+)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> </bygroups> <push state="tag"/> </rule> <rule pattern="(<)(\s*)(/)(\s*)([\w:.-]+)(\s*)(>)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="Punctuation"/> <token type="Text"/> <token type="NameTag"/> <token type="Text"/> <token type="Punctuation"/> </bygroups> </rule> </state> <state name="comment"> <rule pattern="[^-]+"> <token type="Comment"/> </rule> <rule pattern="-->"> <token type="Comment"/> <pop depth="1"/> </rule> <rule pattern="-"> <token type="Comment"/> </rule> </state> <state name="tag"> <rule pattern="\s+"> <token type="Text"/> </rule> <rule pattern="([\w:-]+\s*)(=)(\s*)"> <bygroups> <token type="NameAttribute"/> <token type="Operator"/> <token type="Text"/> </bygroups> <push state="attr"/> </rule> <rule pattern="[\w:-]+"> <token type="NameAttribute"/> </rule> <rule pattern="(/?)(\s*)(>)"> <bygroups> <token type="Punctuation"/> <token type="Text"/> <token type="Punctuation"/> </bygroups> <pop depth="1"/> </rule> </state> </rules> </lexer>