1. <lexer>
    
  2.   <config>
    
  3.     <name>Common Lisp</name>
    
  4.     <alias>common-lisp</alias>
    
  5.     <alias>cl</alias>
    
  6.     <alias>lisp</alias>
    
  7.     <filename>*.cl</filename>
    
  8.     <filename>*.lisp</filename>
    
  9.     <mime_type>text/x-common-lisp</mime_type>
    
  10.     <case_insensitive>true</case_insensitive>
    
  11.   </config>
    
  12.   <rules>
    
  13.     <state name="body">
    
  14.       <rule pattern="\s+">
    
  15.         <token type="Text"/>
    
  16.       </rule>
    
  17.       <rule pattern=";.*$">
    
  18.         <token type="CommentSingle"/>
    
  19.       </rule>
    
  20.       <rule pattern="#\|">
    
  21.         <token type="CommentMultiline"/>
    
  22.         <push state="multiline-comment"/>
    
  23.       </rule>
    
  24.       <rule pattern="#\d*Y.*$">
    
  25.         <token type="CommentSpecial"/>
    
  26.       </rule>
    
  27.       <rule pattern="&#34;(\\.|\\\n|[^&#34;\\])*&#34;">
    
  28.         <token type="LiteralString"/>
    
  29.       </rule>
    
  30.       <rule pattern=":(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  31.         <token type="LiteralStringSymbol"/>
    
  32.       </rule>
    
  33.       <rule pattern="::(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  34.         <token type="LiteralStringSymbol"/>
    
  35.       </rule>
    
  36.       <rule pattern=":#(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  37.         <token type="LiteralStringSymbol"/>
    
  38.       </rule>
    
  39.       <rule pattern="&#39;(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  40.         <token type="LiteralStringSymbol"/>
    
  41.       </rule>
    
  42.       <rule pattern="&#39;">
    
  43.         <token type="Operator"/>
    
  44.       </rule>
    
  45.       <rule pattern="`">
    
  46.         <token type="Operator"/>
    
  47.       </rule>
    
  48.       <rule pattern="[-+]?\d+\.?(?=[ &#34;()\&#39;\n,;`])">
    
  49.         <token type="LiteralNumberInteger"/>
    
  50.       </rule>
    
  51.       <rule pattern="[-+]?\d+/\d+(?=[ &#34;()\&#39;\n,;`])">
    
  52.         <token type="LiteralNumber"/>
    
  53.       </rule>
    
  54.       <rule pattern="[-+]?(\d*\.\d+([defls][-+]?\d+)?|\d+(\.\d*)?[defls][-+]?\d+)(?=[ &#34;()\&#39;\n,;`])">
    
  55.         <token type="LiteralNumberFloat"/>
    
  56.       </rule>
    
  57.       <rule pattern="#\\.(?=[ &#34;()\&#39;\n,;`])">
    
  58.         <token type="LiteralStringChar"/>
    
  59.       </rule>
    
  60.       <rule pattern="#\\(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  61.         <token type="LiteralStringChar"/>
    
  62.       </rule>
    
  63.       <rule pattern="#\(">
    
  64.         <token type="Operator"/>
    
  65.         <push state="body"/>
    
  66.       </rule>
    
  67.       <rule pattern="#\d*\*[01]*">
    
  68.         <token type="LiteralOther"/>
    
  69.       </rule>
    
  70.       <rule pattern="#:(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  71.         <token type="LiteralStringSymbol"/>
    
  72.       </rule>
    
  73.       <rule pattern="#[.,]">
    
  74.         <token type="Operator"/>
    
  75.       </rule>
    
  76.       <rule pattern="#\&#39;">
    
  77.         <token type="NameFunction"/>
    
  78.       </rule>
    
  79.       <rule pattern="#b[+-]?[01]+(/[01]+)?">
    
  80.         <token type="LiteralNumberBin"/>
    
  81.       </rule>
    
  82.       <rule pattern="#o[+-]?[0-7]+(/[0-7]+)?">
    
  83.         <token type="LiteralNumberOct"/>
    
  84.       </rule>
    
  85.       <rule pattern="#x[+-]?[0-9a-f]+(/[0-9a-f]+)?">
    
  86.         <token type="LiteralNumberHex"/>
    
  87.       </rule>
    
  88.       <rule pattern="#\d+r[+-]?[0-9a-z]+(/[0-9a-z]+)?">
    
  89.         <token type="LiteralNumber"/>
    
  90.       </rule>
    
  91.       <rule pattern="(#c)(\()">
    
  92.         <bygroups>
    
  93.           <token type="LiteralNumber"/>
    
  94.           <token type="Punctuation"/>
    
  95.         </bygroups>
    
  96.         <push state="body"/>
    
  97.       </rule>
    
  98.       <rule pattern="(#\d+a)(\()">
    
  99.         <bygroups>
    
  100.           <token type="LiteralOther"/>
    
  101.           <token type="Punctuation"/>
    
  102.         </bygroups>
    
  103.         <push state="body"/>
    
  104.       </rule>
    
  105.       <rule pattern="(#s)(\()">
    
  106.         <bygroups>
    
  107.           <token type="LiteralOther"/>
    
  108.           <token type="Punctuation"/>
    
  109.         </bygroups>
    
  110.         <push state="body"/>
    
  111.       </rule>
    
  112.       <rule pattern="#p?&#34;(\\.|[^&#34;])*&#34;">
    
  113.         <token type="LiteralOther"/>
    
  114.       </rule>
    
  115.       <rule pattern="#\d+=">
    
  116.         <token type="Operator"/>
    
  117.       </rule>
    
  118.       <rule pattern="#\d+#">
    
  119.         <token type="Operator"/>
    
  120.       </rule>
    
  121.       <rule pattern="#+nil(?=[ &#34;()\&#39;\n,;`])\s*\(">
    
  122.         <token type="CommentPreproc"/>
    
  123.         <push state="commented-form"/>
    
  124.       </rule>
    
  125.       <rule pattern="#[+-]">
    
  126.         <token type="Operator"/>
    
  127.       </rule>
    
  128.       <rule pattern="(,@|,|\.)">
    
  129.         <token type="Operator"/>
    
  130.       </rule>
    
  131.       <rule pattern="(t|nil)(?=[ &#34;()\&#39;\n,;`])">
    
  132.         <token type="NameConstant"/>
    
  133.       </rule>
    
  134.       <rule pattern="\*(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)\*">
    
  135.         <token type="NameVariableGlobal"/>
    
  136.       </rule>
    
  137.       <rule pattern="(\|[^|]+\||(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~])(?:\\.|[\w!$%&amp;*+-/&lt;=&gt;?@\[\]^{}~]|[#.:])*)">
    
  138.         <token type="NameVariable"/>
    
  139.       </rule>
    
  140.       <rule pattern="\(">
    
  141.         <token type="Punctuation"/>
    
  142.         <push state="body"/>
    
  143.       </rule>
    
  144.       <rule pattern="\)">
    
  145.         <token type="Punctuation"/>
    
  146.         <pop depth="1"/>
    
  147.       </rule>
    
  148.     </state>
    
  149.     <state name="root">
    
  150.       <rule>
    
  151.         <push state="body"/>
    
  152.       </rule>
    
  153.     </state>
    
  154.     <state name="multiline-comment">
    
  155.       <rule pattern="#\|">
    
  156.         <token type="CommentMultiline"/>
    
  157.         <push/>
    
  158.       </rule>
    
  159.       <rule pattern="\|#">
    
  160.         <token type="CommentMultiline"/>
    
  161.         <pop depth="1"/>
    
  162.       </rule>
    
  163.       <rule pattern="[^|#]+">
    
  164.         <token type="CommentMultiline"/>
    
  165.       </rule>
    
  166.       <rule pattern="[|#]">
    
  167.         <token type="CommentMultiline"/>
    
  168.       </rule>
    
  169.     </state>
    
  170.     <state name="commented-form">
    
  171.       <rule pattern="\(">
    
  172.         <token type="CommentPreproc"/>
    
  173.         <push/>
    
  174.       </rule>
    
  175.       <rule pattern="\)">
    
  176.         <token type="CommentPreproc"/>
    
  177.         <pop depth="1"/>
    
  178.       </rule>
    
  179.       <rule pattern="[^()]+">
    
  180.         <token type="CommentPreproc"/>
    
  181.       </rule>
    
  182.     </state>
    
  183.   </rules>
    
  184. </lexer>