...
1<lexer>
2 <config>
3 <name>GAS</name>
4 <alias>gas</alias>
5 <alias>asm</alias>
6 <filename>*.s</filename>
7 <filename>*.S</filename>
8 <mime_type>text/x-gas</mime_type>
9 </config>
10 <rules>
11 <state name="punctuation">
12 <rule pattern="[-*,.()\[\]!:]+">
13 <token type="Punctuation"/>
14 </rule>
15 </state>
16 <state name="root">
17 <rule>
18 <include state="whitespace"/>
19 </rule>
20 <rule pattern="(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+):">
21 <token type="NameLabel"/>
22 </rule>
23 <rule pattern="\.(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
24 <token type="NameAttribute"/>
25 <push state="directive-args"/>
26 </rule>
27 <rule pattern="lock|rep(n?z)?|data\d+">
28 <token type="NameAttribute"/>
29 </rule>
30 <rule pattern="(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
31 <token type="NameFunction"/>
32 <push state="instruction-args"/>
33 </rule>
34 <rule pattern="[\r\n]+">
35 <token type="Text"/>
36 </rule>
37 </state>
38 <state name="directive-args">
39 <rule pattern="(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
40 <token type="NameConstant"/>
41 </rule>
42 <rule pattern=""(\\"|[^"])*"">
43 <token type="LiteralString"/>
44 </rule>
45 <rule pattern="@(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
46 <token type="NameAttribute"/>
47 </rule>
48 <rule pattern="(?:0[xX][a-zA-Z0-9]+|\d+)">
49 <token type="LiteralNumberInteger"/>
50 </rule>
51 <rule pattern="%(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
52 <token type="NameVariable"/>
53 </rule>
54 <rule pattern="[\r\n]+">
55 <token type="Text"/>
56 <pop depth="1"/>
57 </rule>
58 <rule pattern="([;#]|//).*?\n">
59 <token type="CommentSingle"/>
60 <pop depth="1"/>
61 </rule>
62 <rule pattern="/[*].*?[*]/">
63 <token type="CommentMultiline"/>
64 </rule>
65 <rule pattern="/[*].*?\n[\w\W]*?[*]/">
66 <token type="CommentMultiline"/>
67 <pop depth="1"/>
68 </rule>
69 <rule>
70 <include state="punctuation"/>
71 </rule>
72 <rule>
73 <include state="whitespace"/>
74 </rule>
75 </state>
76 <state name="instruction-args">
77 <rule pattern="([a-z0-9]+)( )(<)((?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+))(>)">
78 <bygroups>
79 <token type="LiteralNumberHex"/>
80 <token type="Text"/>
81 <token type="Punctuation"/>
82 <token type="NameConstant"/>
83 <token type="Punctuation"/>
84 </bygroups>
85 </rule>
86 <rule pattern="([a-z0-9]+)( )(<)((?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+))([-+])((?:0[xX][a-zA-Z0-9]+|\d+))(>)">
87 <bygroups>
88 <token type="LiteralNumberHex"/>
89 <token type="Text"/>
90 <token type="Punctuation"/>
91 <token type="NameConstant"/>
92 <token type="Punctuation"/>
93 <token type="LiteralNumberInteger"/>
94 <token type="Punctuation"/>
95 </bygroups>
96 </rule>
97 <rule pattern="(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
98 <token type="NameConstant"/>
99 </rule>
100 <rule pattern="(?:0[xX][a-zA-Z0-9]+|\d+)">
101 <token type="LiteralNumberInteger"/>
102 </rule>
103 <rule pattern="%(?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+)">
104 <token type="NameVariable"/>
105 </rule>
106 <rule pattern="$(?:0[xX][a-zA-Z0-9]+|\d+)">
107 <token type="LiteralNumberInteger"/>
108 </rule>
109 <rule pattern="$'(.|\\')'">
110 <token type="LiteralStringChar"/>
111 </rule>
112 <rule pattern="[\r\n]+">
113 <token type="Text"/>
114 <pop depth="1"/>
115 </rule>
116 <rule pattern="([;#]|//).*?\n">
117 <token type="CommentSingle"/>
118 <pop depth="1"/>
119 </rule>
120 <rule pattern="/[*].*?[*]/">
121 <token type="CommentMultiline"/>
122 </rule>
123 <rule pattern="/[*].*?\n[\w\W]*?[*]/">
124 <token type="CommentMultiline"/>
125 <pop depth="1"/>
126 </rule>
127 <rule>
128 <include state="punctuation"/>
129 </rule>
130 <rule>
131 <include state="whitespace"/>
132 </rule>
133 </state>
134 <state name="whitespace">
135 <rule pattern="\n">
136 <token type="Text"/>
137 </rule>
138 <rule pattern="\s+">
139 <token type="Text"/>
140 </rule>
141 <rule pattern="([;#]|//).*?\n">
142 <token type="CommentSingle"/>
143 </rule>
144 <rule pattern="/[*][\w\W]*?[*]/">
145 <token type="CommentMultiline"/>
146 </rule>
147 </state>
148 </rules>
149</lexer>
View as plain text