66
|
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> |