1<lexer>
  2  <config>
  3    <name>Hy</name>
  4    <alias>hylang</alias>
  5    <filename>*.hy</filename>
  6    <mime_type>text/x-hy</mime_type>
  7    <mime_type>application/x-hy</mime_type>
  8  </config>
  9  <rules>
 10    <state name="root">
 11      <rule pattern=";.*$">
 12        <token type="CommentSingle"/>
 13      </rule>
 14      <rule pattern="[,\s]+">
 15        <token type="Text"/>
 16      </rule>
 17      <rule pattern="-?\d+\.\d+">
 18        <token type="LiteralNumberFloat"/>
 19      </rule>
 20      <rule pattern="-?\d+">
 21        <token type="LiteralNumberInteger"/>
 22      </rule>
 23      <rule pattern="0[0-7]+j?">
 24        <token type="LiteralNumberOct"/>
 25      </rule>
 26      <rule pattern="0[xX][a-fA-F0-9]+">
 27        <token type="LiteralNumberHex"/>
 28      </rule>
 29      <rule pattern=""(\\\\|\\"|[^"])*"">
 30        <token type="LiteralString"/>
 31      </rule>
 32      <rule pattern="'(?!#)[\w!$%*+<=>?/.#-]+">
 33        <token type="LiteralStringSymbol"/>
 34      </rule>
 35      <rule pattern="\\(.|[a-z]+)">
 36        <token type="LiteralStringChar"/>
 37      </rule>
 38      <rule pattern="^(\s*)([rRuU]{,2}"""(?:.|\n)*?""")">
 39        <bygroups>
 40          <token type="Text"/>
 41          <token type="LiteralStringDoc"/>
 42        </bygroups>
 43      </rule>
 44      <rule pattern="^(\s*)([rRuU]{,2}'''(?:.|\n)*?''')">
 45        <bygroups>
 46          <token type="Text"/>
 47          <token type="LiteralStringDoc"/>
 48        </bygroups>
 49      </rule>
 50      <rule pattern="::?(?!#)[\w!$%*+<=>?/.#-]+">
 51        <token type="LiteralStringSymbol"/>
 52      </rule>
 53      <rule pattern="~@|[`\'#^~&@]">
 54        <token type="Operator"/>
 55      </rule>
 56      <rule>
 57        <include state="py-keywords"/>
 58      </rule>
 59      <rule>
 60        <include state="py-builtins"/>
 61      </rule>
 62      <rule pattern="(eval-when-compile|eval-and-compile|with-decorator|unquote-splice|quasiquote|list_comp|unquote|foreach|kwapply|import|not-in|unless|is-not|quote|progn|slice|assoc|first|while|when|rest|cond|<<=|->>|for|get|>>=|let|cdr|car|is|->|do|in|\||~|,) ">
 63        <token type="Keyword"/>
 64      </rule>
 65      <rule pattern="(defmacro|defclass|lambda|defun|defn|setv|def|fn) ">
 66        <token type="KeywordDeclaration"/>
 67      </rule>
 68      <rule pattern="(repeatedly|take_while|iterator\?|iterable\?|instance\?|distinct|take_nth|numeric\?|iterate|filter|repeat|remove|even\?|none\?|cycle|zero\?|odd\?|pos\?|neg\?|take|drop|inc|dec|nth) ">
 69        <token type="NameBuiltin"/>
 70      </rule>
 71      <rule pattern="(?<=\()(?!#)[\w!$%*+<=>?/.#-]+">
 72        <token type="NameFunction"/>
 73      </rule>
 74      <rule pattern="(?!#)[\w!$%*+<=>?/.#-]+">
 75        <token type="NameVariable"/>
 76      </rule>
 77      <rule pattern="(\[|\])">
 78        <token type="Punctuation"/>
 79      </rule>
 80      <rule pattern="(\{|\})">
 81        <token type="Punctuation"/>
 82      </rule>
 83      <rule pattern="(\(|\))">
 84        <token type="Punctuation"/>
 85      </rule>
 86    </state>
 87    <state name="py-keywords">
 88      <rule pattern="(yield from|continue|finally|lambda|assert|global|except|return|print|yield|while|break|raise|elif|pass|exec|else|with|try|for|del|as|if)\b">
 89        <token type="Keyword"/>
 90      </rule>
 91    </state>
 92    <state name="py-builtins">
 93      <rule pattern="(?<!\.)(staticmethod|classmethod|__import__|isinstance|basestring|issubclass|frozenset|raw_input|bytearray|enumerate|property|callable|reversed|execfile|hasattr|setattr|compile|complex|delattr|unicode|globals|getattr|unichr|reduce|xrange|buffer|intern|filter|locals|divmod|coerce|sorted|reload|object|slice|round|float|super|input|bytes|apply|tuple|range|iter|dict|long|type|hash|vars|next|file|exit|open|repr|eval|bool|list|bin|pow|zip|ord|oct|min|set|any|max|map|all|len|sum|int|dir|hex|chr|abs|cmp|str|id)\b">
 94        <token type="NameBuiltin"/>
 95      </rule>
 96      <rule pattern="(?<!\.)(self|None|Ellipsis|NotImplemented|False|True|cls)\b">
 97        <token type="NameBuiltinPseudo"/>
 98      </rule>
 99      <rule pattern="(?<!\.)(PendingDeprecationWarning|UnicodeTranslateError|NotImplementedError|UnicodeEncodeError|UnicodeDecodeError|DeprecationWarning|FloatingPointError|UnboundLocalError|KeyboardInterrupt|ZeroDivisionError|EnvironmentError|IndentationError|ArithmeticError|OverflowWarning|ReferenceError|RuntimeWarning|AttributeError|AssertionError|NotImplemented|UnicodeWarning|FutureWarning|BaseException|StopIteration|SyntaxWarning|OverflowError|StandardError|ImportWarning|GeneratorExit|RuntimeError|WindowsError|UnicodeError|LookupError|SyntaxError|SystemError|ImportError|MemoryError|UserWarning|ValueError|IndexError|SystemExit|Exception|TypeError|NameError|EOFError|VMSError|KeyError|TabError|IOError|OSError|Warning)\b">
100        <token type="NameException"/>
101      </rule>
102    </state>
103  </rules>
104</lexer>