1. <lexer>
    
  2.   <config>
    
  3.     <name>Agda</name>
    
  4.     <alias>agda</alias>
    
  5.     <filename>*.agda</filename>
    
  6.     <mime_type>text/x-agda</mime_type>
    
  7.   </config>
    
  8.   <rules>
    
  9.     <state name="root">
    
  10.       <rule pattern="^(\s*)([^\s(){}]+)(\s*)(:)(\s*)"><bygroups><token type="TextWhitespace"/><token type="NameFunction"/><token type="TextWhitespace"/><token type="OperatorWord"/><token type="TextWhitespace"/></bygroups></rule>
    
  11.       <rule pattern="--(?![!#$%&amp;*+./&lt;=&gt;?@^|_~:\\]).*?$"><token type="CommentSingle"/></rule>
    
  12.       <rule pattern="\{-"><token type="CommentMultiline"/><push state="comment"/></rule>
    
  13.       <rule pattern="\{!"><token type="CommentMultiline"/><push state="hole"/></rule>
    
  14.       <rule pattern="\b(abstract|codata|coinductive|constructor|data|do|eta-equality|field|forall|hiding|in|inductive|infix|infixl|infixr|instance|interleaved|let|macro|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|quote|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)(?!\&#x27;)\b"><token type="KeywordReserved"/></rule>
    
  15.       <rule pattern="(import|module)(\s+)"><bygroups><token type="KeywordReserved"/><token type="TextWhitespace"/></bygroups><push state="module"/></rule>
    
  16.       <rule pattern="\b(Set|Prop)[\u2080-\u2089]*\b"><token type="KeywordType"/></rule>
    
  17.       <rule pattern="(\(|\)|\{|\})"><token type="Operator"/></rule>
    
  18.       <rule pattern="(\.{1,3}|\||\u03BB|\u2200|\u2192|:|=|-&gt;)"><token type="OperatorWord"/></rule>
    
  19.       <rule pattern="\d+[eE][+-]?\d+"><token type="LiteralNumberFloat"/></rule>
    
  20.       <rule pattern="\d+\.\d+([eE][+-]?\d+)?"><token type="LiteralNumberFloat"/></rule>
    
  21.       <rule pattern="0[xX][\da-fA-F]+"><token type="LiteralNumberHex"/></rule>
    
  22.       <rule pattern="\d+"><token type="LiteralNumberInteger"/></rule>
    
  23.       <rule pattern="&#x27;"><token type="LiteralStringChar"/><push state="character"/></rule>
    
  24.       <rule pattern="&quot;"><token type="LiteralString"/><push state="string"/></rule>
    
  25.       <rule pattern="[^\s(){}]+"><token type="Text"/></rule>
    
  26.       <rule pattern="\s+?"><token type="TextWhitespace"/></rule>
    
  27.     </state>
    
  28.     <state name="hole">
    
  29.       <rule pattern="[^!{}]+"><token type="CommentMultiline"/></rule>
    
  30.       <rule pattern="\{!"><token type="CommentMultiline"/><push/></rule>
    
  31.       <rule pattern="!\}"><token type="CommentMultiline"/><pop depth="1"/></rule>
    
  32.       <rule pattern="[!{}]"><token type="CommentMultiline"/></rule>
    
  33.     </state>
    
  34.     <state name="module">
    
  35.       <rule pattern="\{-"><token type="CommentMultiline"/><push state="comment"/></rule>
    
  36.       <rule pattern="[a-zA-Z][\w.\&#x27;]*"><token type="Name"/><pop depth="1"/></rule>
    
  37.       <rule pattern="[\W0-9_]+"><token type="Text"/></rule>
    
  38.     </state>
    
  39.     <state name="comment">
    
  40.       <rule pattern="[^-{}]+"><token type="CommentMultiline"/></rule>
    
  41.       <rule pattern="\{-"><token type="CommentMultiline"/><push/></rule>
    
  42.       <rule pattern="-\}"><token type="CommentMultiline"/><pop depth="1"/></rule>
    
  43.       <rule pattern="[-{}]"><token type="CommentMultiline"/></rule>
    
  44.     </state>
    
  45.     <state name="character">
    
  46.       <rule pattern="[^\\&#x27;]&#x27;"><token type="LiteralStringChar"/><pop depth="1"/></rule>
    
  47.       <rule pattern="\\"><token type="LiteralStringEscape"/><push state="escape"/></rule>
    
  48.       <rule pattern="&#x27;"><token type="LiteralStringChar"/><pop depth="1"/></rule>
    
  49.     </state>
    
  50.     <state name="string">
    
  51.       <rule pattern="[^\\&quot;]+"><token type="LiteralString"/></rule>
    
  52.       <rule pattern="\\"><token type="LiteralStringEscape"/><push state="escape"/></rule>
    
  53.       <rule pattern="&quot;"><token type="LiteralString"/><pop depth="1"/></rule>
    
  54.     </state>
    
  55.     <state name="escape">
    
  56.       <rule pattern="[abfnrtv&quot;\&#x27;&amp;\\]"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  57.       <rule pattern="\^[][A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸ-ŹŻŽƁ-ƂƄƆ-ƇƉ-ƋƎ-ƑƓ-ƔƖ-ƘƜ-ƝƟ-ƠƢƤƦ-ƧƩƬƮ-ƯƱ-ƳƵƷ-ƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺ-ȻȽ-ȾɁɃ-ɆɈɊɌɎͰͲͶͿΆΈ-ΊΌΎ-ΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹ-ϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀ-ӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱ-ՖႠ-ჅჇჍᎠ-ᏵᲐ-ᲺᲽ-ᲿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾ-ℿⅅↃⰀ-ⰮⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽ-ꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪ-ꞮꞰ-ꞴꞶꞸA-Z𐐀-𐐧𐒰-𐓓𐲀-𐲲𑢠-𑢿𖹀-𖹟𝐀-𝐙𝐴-𝑍𝑨-𝒁𝒜𝒞-𝒟𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒵𝓐-𝓩𝔄-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔸-𝔹𝔻-𝔾𝕀-𝕄𝕆𝕊-𝕐𝕬-𝖅𝖠-𝖹𝗔-𝗭𝘈-𝘡𝘼-𝙕𝙰-𝚉𝚨-𝛀𝛢-𝛺𝜜-𝜴𝝖-𝝮𝞐-𝞨𝟊𞤀-𞤡@^_]"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  58.       <rule pattern="NUL|SOH|[SE]TX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|S[OI]|DLE|DC[1-4]|NAK|SYN|ETB|CAN|EM|SUB|ESC|[FGRU]S|SP|DEL"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  59.       <rule pattern="o[0-7]+"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  60.       <rule pattern="x[\da-fA-F]+"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  61.       <rule pattern="\d+"><token type="LiteralStringEscape"/><pop depth="1"/></rule>
    
  62.       <rule pattern="(\s+)(\\)"><bygroups><token type="TextWhitespace"/><token type="LiteralStringEscape"/></bygroups><pop depth="1"/></rule>
    
  63.     </state>
    
  64.   </rules>
    
  65. </lexer>
    
  66.