1. <lexer>
    
  2.   <config>
    
  3.     <name>Fennel</name>
    
  4.     <alias>fennel</alias>
    
  5.     <alias>fnl</alias>
    
  6.     <filename>*.fennel</filename>
    
  7.     <mime_type>text/x-fennel</mime_type>
    
  8.     <mime_type>application/x-fennel</mime_type>
    
  9.   </config>
    
  10.   <rules>
    
  11.     <state name="root">
    
  12.       <rule pattern=";.*$">
    
  13.         <token type="CommentSingle"/>
    
  14.       </rule>
    
  15.       <rule pattern="\s+">
    
  16.         <token type="TextWhitespace"/>
    
  17.       </rule>
    
  18.       <rule pattern="-?\d+\.\d+">
    
  19.         <token type="LiteralNumberFloat"/>
    
  20.       </rule>
    
  21.       <rule pattern="-?\d+">
    
  22.         <token type="LiteralNumberInteger"/>
    
  23.       </rule>
    
  24.       <rule pattern="0x-?[abcdef\d]+">
    
  25.         <token type="LiteralNumberHex"/>
    
  26.       </rule>
    
  27.       <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
    
  28.         <token type="LiteralString"/>
    
  29.       </rule>
    
  30.       <rule pattern="&#39;(?!#)[\w!$%*+&lt;=&gt;?/.#-]+">
    
  31.         <token type="LiteralStringSymbol"/>
    
  32.       </rule>
    
  33.       <rule pattern="\\(.|[a-z]+)">
    
  34.         <token type="LiteralStringChar"/>
    
  35.       </rule>
    
  36.       <rule pattern="::?#?(?!#)[\w!$%*+&lt;=&gt;?/.#-]+">
    
  37.         <token type="LiteralStringSymbol"/>
    
  38.       </rule>
    
  39.       <rule pattern="~@|[`\&#39;#^~&amp;@]">
    
  40.         <token type="Operator"/>
    
  41.       </rule>
    
  42.       <rule pattern="(require-macros|set-forcibly!|import-macros|eval-compiler|pick-values|accumulate|macrodebug|pick-args|with-open|icollect|partial|comment|include|collect|hashfn|rshift|values|length|lshift|quote|match|while|doto|band|when|bnot|bxor|not=|tset|-\?&gt;&gt;|each|-&gt;&gt;|let|doc|for|and|set|not|-\?&gt;|bor|lua|\?\.|do|&gt;=|&lt;=|//|\.\.|-&gt;|or|if|~=|\^|&gt;|=|&lt;|:|/|\.|-|\+|\*|%|#) ">
    
  43.         <token type="Keyword"/>
    
  44.       </rule>
    
  45.       <rule pattern="(global|lambda|macros|local|macro|var|fn|λ) ">
    
  46.         <token type="KeywordDeclaration"/>
    
  47.       </rule>
    
  48.       <rule pattern="(debug\.setuservalue|debug\.getmetatable|debug\.getuservalue|package\.searchpath|debug\.setmetatable|debug\.upvaluejoin|debug\.getregistry|coroutine\.running|coroutine\.create|debug\.setupvalue|debug\.getupvalue|coroutine\.status|coroutine\.resume|debug\.upvalueid|package\.loadlib|debug\.traceback|math\.randomseed|coroutine\.yield|collectgarbage|debug\.getlocal|package\.seeall|string\.reverse|coroutine\.wrap|debug\.setlocal|bit32\.replace|bit32\.lrotate|debug\.gethook|debug\.getinfo|bit32\.extract|string\.gmatch|string\.format|bit32\.arshift|bit32\.rrotate|debug\.sethook|table\.concat|os\.setlocale|table\.remove|string\.lower|bit32\.rshift|bit32\.lshift|string\.match|table\.unpack|setmetatable|getmetatable|table\.insert|string\.upper|string\.byte|debug\.debug|string\.gsub|bit32\.btest|math\.random|string\.find|string\.dump|os\.difftime|string\.char|table\.sort|loadstring|io\.tmpfile|bit32\.band|bit32\.bnot|string\.sub|os\.execute|os\.tmpname|table\.maxn|math\.log10|math\.atan2|table\.pack|math\.frexp|math\.ldexp|bit32\.bxor|string\.len|math\.floor|string\.rep|coroutine|math\.cosh|math\.ceil|math\.atan|math\.asin|math\.acos|math\.modf|os\.rename|os\.remove|io\.output|os\.getenv|bit32\.bor|math\.sinh|math\.fmod|math\.tanh|math\.sqrt|math\.cos|math\.tan|io\.lines|os\.clock|tostring|io\.input|math\.sin|tonumber|loadfile|math\.rad|math\.pow|io\.flush|math\.abs|math\.min|rawequal|math\.max|math\.log|io\.close|io\.popen|math\.exp|math\.deg|io\.write|os\.time|io\.read|io\.open|require|os\.exit|os\.date|package|io\.type|module|select|rawset|rawlen|rawget|unpack|assert|dofile|ipairs|string|xpcall|table|pcall|bit32|print|debug|error|pairs|math|type|next|load|arg|io|os|_G) ">
    
  49.         <token type="NameBuiltin"/>
    
  50.       </rule>
    
  51.       <rule pattern="(?&lt;=\()(?!#)[\w!$%*+&lt;=&gt;?/.#-]+">
    
  52.         <token type="NameFunction"/>
    
  53.       </rule>
    
  54.       <rule pattern="(?!#)[\w!$%*+&lt;=&gt;?/.#-]+">
    
  55.         <token type="NameVariable"/>
    
  56.       </rule>
    
  57.       <rule pattern="(\[|\])">
    
  58.         <token type="Punctuation"/>
    
  59.       </rule>
    
  60.       <rule pattern="(\{|\})">
    
  61.         <token type="Punctuation"/>
    
  62.       </rule>
    
  63.       <rule pattern="(\(|\))">
    
  64.         <token type="Punctuation"/>
    
  65.       </rule>
    
  66.     </state>
    
  67.   </rules>
    
  68. </lexer>