<lexer> <config> <name>BibTeX</name> <alias>bib</alias> <alias>bibtex</alias> <filename>*.bib</filename> <mime_type>text/x-bibtex</mime_type> <case_insensitive>true</case_insensitive> <not_multiline>true</not_multiline> </config> <rules> <state name="closing-brace"> <rule> <include state="whitespace"/> </rule> <rule pattern="[})]"> <token type="Punctuation"/> <pop depth="1"/> </rule> </state> <state name="braced-string"> <rule pattern="\{"> <token type="LiteralString"/> <push/> </rule> <rule pattern="\}"> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="[^\{\}]+"> <token type="LiteralString"/> </rule> </state> <state name="whitespace"> <rule pattern="\s+"> <token type="Text"/> </rule> </state> <state name="value"> <rule> <include state="whitespace"/> </rule> <rule pattern="[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*"> <token type="NameVariable"/> </rule> <rule pattern="""> <token type="LiteralString"/> <push state="quoted-string"/> </rule> <rule pattern="\{"> <token type="LiteralString"/> <push state="braced-string"/> </rule> <rule pattern="[\d]+"> <token type="LiteralNumber"/> </rule> <rule pattern="#"> <token type="Punctuation"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="quoted-string"> <rule pattern="\{"> <token type="LiteralString"/> <push state="braced-string"/> </rule> <rule pattern="""> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="[^\{\"]+"> <token type="LiteralString"/> </rule> </state> <state name="root"> <rule> <include state="whitespace"/> </rule> <rule pattern="@comment"> <token type="Comment"/> </rule> <rule pattern="@preamble"> <token type="NameClass"/> <push state="closing-brace" state="value" state="opening-brace"/> </rule> <rule pattern="@string"> <token type="NameClass"/> <push state="closing-brace" state="field" state="opening-brace"/> </rule> <rule pattern="@[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*"> <token type="NameClass"/> <push state="closing-brace" state="command-body" state="opening-brace"/> </rule> <rule pattern=".+"> <token type="Comment"/> </rule> </state> <state name="command-body"> <rule> <include state="whitespace"/> </rule> <rule pattern="[^\s\,\}]+"> <token type="NameLabel"/> <push state="#pop" state="fields"/> </rule> </state> <state name="fields"> <rule> <include state="whitespace"/> </rule> <rule pattern=","> <token type="Punctuation"/> <push state="field"/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="="> <rule> <include state="whitespace"/> </rule> <rule pattern="="> <token type="Punctuation"/> <pop depth="1"/> </rule> </state> <state name="field"> <rule> <include state="whitespace"/> </rule> <rule pattern="[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*"> <token type="NameAttribute"/> <push state="value" state="="/> </rule> <rule> <pop depth="1"/> </rule> </state> <state name="opening-brace"> <rule> <include state="whitespace"/> </rule> <rule pattern="[{(]"> <token type="Punctuation"/> <pop depth="1"/> </rule> </state> </rules> </lexer>