...
1<lexer>
2 <config>
3 <name>Lua</name>
4 <alias>lua</alias>
5 <filename>*.lua</filename>
6 <filename>*.wlua</filename>
7 <mime_type>text/x-lua</mime_type>
8 <mime_type>application/x-lua</mime_type>
9 </config>
10 <rules>
11 <state name="funcname">
12 <rule>
13 <include state="ws"/>
14 </rule>
15 <rule pattern="[.:]">
16 <token type="Punctuation"/>
17 </rule>
18 <rule pattern="(?:[^\W\d]\w*)(?=(?:(?:--\[(=*)\[[\w\W]*?\](\2)\])|(?:--.*$)|(?:\s+))*[.:])">
19 <token type="NameClass"/>
20 </rule>
21 <rule pattern="(?:[^\W\d]\w*)">
22 <token type="NameFunction"/>
23 <pop depth="1"/>
24 </rule>
25 <rule pattern="\(">
26 <token type="Punctuation"/>
27 <pop depth="1"/>
28 </rule>
29 </state>
30 <state name="label">
31 <rule>
32 <include state="ws"/>
33 </rule>
34 <rule pattern="::">
35 <token type="Punctuation"/>
36 <pop depth="1"/>
37 </rule>
38 <rule pattern="(?:[^\W\d]\w*)">
39 <token type="NameLabel"/>
40 </rule>
41 </state>
42 <state name="dqs">
43 <rule pattern=""">
44 <token type="LiteralStringDouble"/>
45 <pop depth="1"/>
46 </rule>
47 <rule pattern="[^\\"]+">
48 <token type="LiteralStringDouble"/>
49 </rule>
50 </state>
51 <state name="root">
52 <rule pattern="#!.*">
53 <token type="CommentPreproc"/>
54 </rule>
55 <rule>
56 <push state="base"/>
57 </rule>
58 </state>
59 <state name="ws">
60 <rule pattern="(?:--\[(=*)\[[\w\W]*?\](\1)\])">
61 <token type="CommentMultiline"/>
62 </rule>
63 <rule pattern="(?:--.*$)">
64 <token type="CommentSingle"/>
65 </rule>
66 <rule pattern="(?:\s+)">
67 <token type="Text"/>
68 </rule>
69 </state>
70 <state name="goto">
71 <rule>
72 <include state="ws"/>
73 </rule>
74 <rule pattern="(?:[^\W\d]\w*)">
75 <token type="NameLabel"/>
76 <pop depth="1"/>
77 </rule>
78 </state>
79 <state name="sqs">
80 <rule pattern="'">
81 <token type="LiteralStringSingle"/>
82 <pop depth="1"/>
83 </rule>
84 <rule pattern="[^\\']+">
85 <token type="LiteralStringSingle"/>
86 </rule>
87 </state>
88 <state name="base">
89 <rule>
90 <include state="ws"/>
91 </rule>
92 <rule pattern="(?i)0x[\da-f]*(\.[\da-f]*)?(p[+-]?\d+)?">
93 <token type="LiteralNumberHex"/>
94 </rule>
95 <rule pattern="(?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?">
96 <token type="LiteralNumberFloat"/>
97 </rule>
98 <rule pattern="(?i)\d+e[+-]?\d+">
99 <token type="LiteralNumberFloat"/>
100 </rule>
101 <rule pattern="\d+">
102 <token type="LiteralNumberInteger"/>
103 </rule>
104 <rule pattern="(?s)\[(=*)\[.*?\]\1\]">
105 <token type="LiteralString"/>
106 </rule>
107 <rule pattern="::">
108 <token type="Punctuation"/>
109 <push state="label"/>
110 </rule>
111 <rule pattern="\.{3}">
112 <token type="Punctuation"/>
113 </rule>
114 <rule pattern="[=<>|~&+\-*/%#^]+|\.\.">
115 <token type="Operator"/>
116 </rule>
117 <rule pattern="[\[\]{}().,:;]">
118 <token type="Punctuation"/>
119 </rule>
120 <rule pattern="(and|or|not)\b">
121 <token type="OperatorWord"/>
122 </rule>
123 <rule pattern="(break|do|else|elseif|end|for|if|in|repeat|return|then|until|while)\b">
124 <token type="KeywordReserved"/>
125 </rule>
126 <rule pattern="goto\b">
127 <token type="KeywordReserved"/>
128 <push state="goto"/>
129 </rule>
130 <rule pattern="(local)\b">
131 <token type="KeywordDeclaration"/>
132 </rule>
133 <rule pattern="(true|false|nil)\b">
134 <token type="KeywordConstant"/>
135 </rule>
136 <rule pattern="(function)\b">
137 <token type="KeywordReserved"/>
138 <push state="funcname"/>
139 </rule>
140 <rule pattern="[A-Za-z_]\w*(\.[A-Za-z_]\w*)?">
141 <token type="Name"/>
142 </rule>
143 <rule pattern="'">
144 <token type="LiteralStringSingle"/>
145 <combined state="stringescape" state="sqs"/>
146 </rule>
147 <rule pattern=""">
148 <token type="LiteralStringDouble"/>
149 <combined state="stringescape" state="dqs"/>
150 </rule>
151 </state>
152 <state name="stringescape">
153 <rule pattern="\\([abfnrtv\\"\']|[\r\n]{1,2}|z\s*|x[0-9a-fA-F]{2}|\d{1,3}|u\{[0-9a-fA-F]+\})">
154 <token type="LiteralStringEscape"/>
155 </rule>
156 </state>
157 </rules>
158</lexer>
View as plain text