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>