gas.xml

  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="&#34;(\\&#34;|[^&#34;])*&#34;">
 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]+)( )(&lt;)((?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+))(&gt;)">
 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]+)( )(&lt;)((?:[a-zA-Z$_][\w$.@-]*|\.[\w$.@-]+))([-+])((?:0[xX][a-zA-Z0-9]+|\d+))(&gt;)">
 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="$&#39;(.|\\&#39;)&#39;">
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>