...
1<lexer>
2 <config>
3 <name>BibTeX</name>
4 <alias>bib</alias>
5 <alias>bibtex</alias>
6 <filename>*.bib</filename>
7 <mime_type>text/x-bibtex</mime_type>
8 <case_insensitive>true</case_insensitive>
9 <not_multiline>true</not_multiline>
10 </config>
11 <rules>
12 <state name="closing-brace">
13 <rule>
14 <include state="whitespace"/>
15 </rule>
16 <rule pattern="[})]">
17 <token type="Punctuation"/>
18 <pop depth="1"/>
19 </rule>
20 </state>
21 <state name="braced-string">
22 <rule pattern="\{">
23 <token type="LiteralString"/>
24 <push/>
25 </rule>
26 <rule pattern="\}">
27 <token type="LiteralString"/>
28 <pop depth="1"/>
29 </rule>
30 <rule pattern="[^\{\}]+">
31 <token type="LiteralString"/>
32 </rule>
33 </state>
34 <state name="whitespace">
35 <rule pattern="\s+">
36 <token type="Text"/>
37 </rule>
38 </state>
39 <state name="value">
40 <rule>
41 <include state="whitespace"/>
42 </rule>
43 <rule pattern="[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*">
44 <token type="NameVariable"/>
45 </rule>
46 <rule pattern=""">
47 <token type="LiteralString"/>
48 <push state="quoted-string"/>
49 </rule>
50 <rule pattern="\{">
51 <token type="LiteralString"/>
52 <push state="braced-string"/>
53 </rule>
54 <rule pattern="[\d]+">
55 <token type="LiteralNumber"/>
56 </rule>
57 <rule pattern="#">
58 <token type="Punctuation"/>
59 </rule>
60 <rule>
61 <pop depth="1"/>
62 </rule>
63 </state>
64 <state name="quoted-string">
65 <rule pattern="\{">
66 <token type="LiteralString"/>
67 <push state="braced-string"/>
68 </rule>
69 <rule pattern=""">
70 <token type="LiteralString"/>
71 <pop depth="1"/>
72 </rule>
73 <rule pattern="[^\{\"]+">
74 <token type="LiteralString"/>
75 </rule>
76 </state>
77 <state name="root">
78 <rule>
79 <include state="whitespace"/>
80 </rule>
81 <rule pattern="@comment">
82 <token type="Comment"/>
83 </rule>
84 <rule pattern="@preamble">
85 <token type="NameClass"/>
86 <push state="closing-brace" state="value" state="opening-brace"/>
87 </rule>
88 <rule pattern="@string">
89 <token type="NameClass"/>
90 <push state="closing-brace" state="field" state="opening-brace"/>
91 </rule>
92 <rule pattern="@[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*">
93 <token type="NameClass"/>
94 <push state="closing-brace" state="command-body" state="opening-brace"/>
95 </rule>
96 <rule pattern=".+">
97 <token type="Comment"/>
98 </rule>
99 </state>
100 <state name="command-body">
101 <rule>
102 <include state="whitespace"/>
103 </rule>
104 <rule pattern="[^\s\,\}]+">
105 <token type="NameLabel"/>
106 <push state="#pop" state="fields"/>
107 </rule>
108 </state>
109 <state name="fields">
110 <rule>
111 <include state="whitespace"/>
112 </rule>
113 <rule pattern=",">
114 <token type="Punctuation"/>
115 <push state="field"/>
116 </rule>
117 <rule>
118 <pop depth="1"/>
119 </rule>
120 </state>
121 <state name="=">
122 <rule>
123 <include state="whitespace"/>
124 </rule>
125 <rule pattern="=">
126 <token type="Punctuation"/>
127 <pop depth="1"/>
128 </rule>
129 </state>
130 <state name="field">
131 <rule>
132 <include state="whitespace"/>
133 </rule>
134 <rule pattern="[a-z_@!$&*+\-./:;<>?\[\\\]^`|~][\w@!$&*+\-./:;<>?\[\\\]^`|~]*">
135 <token type="NameAttribute"/>
136 <push state="value" state="="/>
137 </rule>
138 <rule>
139 <pop depth="1"/>
140 </rule>
141 </state>
142 <state name="opening-brace">
143 <rule>
144 <include state="whitespace"/>
145 </rule>
146 <rule pattern="[{(]">
147 <token type="Punctuation"/>
148 <pop depth="1"/>
149 </rule>
150 </state>
151 </rules>
152</lexer>
View as plain text