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