1. <lexer>
    
  2.   <config>
    
  3.     <name>Cython</name>
    
  4.     <alias>cython</alias>
    
  5.     <alias>pyx</alias>
    
  6.     <alias>pyrex</alias>
    
  7.     <filename>*.pyx</filename>
    
  8.     <filename>*.pxd</filename>
    
  9.     <filename>*.pxi</filename>
    
  10.     <mime_type>text/x-cython</mime_type>
    
  11.     <mime_type>application/x-cython</mime_type>
    
  12.   </config>
    
  13.   <rules>
    
  14.     <state name="funcname">
    
  15.       <rule pattern="[a-zA-Z_]\w*">
    
  16.         <token type="NameFunction"/>
    
  17.         <pop depth="1"/>
    
  18.       </rule>
    
  19.     </state>
    
  20.     <state name="root">
    
  21.       <rule pattern="\n">
    
  22.         <token type="Text"/>
    
  23.       </rule>
    
  24.       <rule pattern="^(\s*)(&#34;&#34;&#34;(?:.|\n)*?&#34;&#34;&#34;)">
    
  25.         <bygroups>
    
  26.           <token type="Text"/>
    
  27.           <token type="LiteralStringDoc"/>
    
  28.         </bygroups>
    
  29.       </rule>
    
  30.       <rule pattern="^(\s*)(&#39;&#39;&#39;(?:.|\n)*?&#39;&#39;&#39;)">
    
  31.         <bygroups>
    
  32.           <token type="Text"/>
    
  33.           <token type="LiteralStringDoc"/>
    
  34.         </bygroups>
    
  35.       </rule>
    
  36.       <rule pattern="[^\S\n]+">
    
  37.         <token type="Text"/>
    
  38.       </rule>
    
  39.       <rule pattern="#.*$">
    
  40.         <token type="Comment"/>
    
  41.       </rule>
    
  42.       <rule pattern="[]{}:(),;[]">
    
  43.         <token type="Punctuation"/>
    
  44.       </rule>
    
  45.       <rule pattern="\\\n">
    
  46.         <token type="Text"/>
    
  47.       </rule>
    
  48.       <rule pattern="\\">
    
  49.         <token type="Text"/>
    
  50.       </rule>
    
  51.       <rule pattern="(in|is|and|or|not)\b">
    
  52.         <token type="OperatorWord"/>
    
  53.       </rule>
    
  54.       <rule pattern="(&lt;)([a-zA-Z0-9.?]+)(&gt;)">
    
  55.         <bygroups>
    
  56.           <token type="Punctuation"/>
    
  57.           <token type="KeywordType"/>
    
  58.           <token type="Punctuation"/>
    
  59.         </bygroups>
    
  60.       </rule>
    
  61.       <rule pattern="!=|==|&lt;&lt;|&gt;&gt;|[-~+/*%=&lt;&gt;&amp;^|.?]">
    
  62.         <token type="Operator"/>
    
  63.       </rule>
    
  64.       <rule pattern="(from)(\d+)(&lt;=)(\s+)(&lt;)(\d+)(:)">
    
  65.         <bygroups>
    
  66.           <token type="Keyword"/>
    
  67.           <token type="LiteralNumberInteger"/>
    
  68.           <token type="Operator"/>
    
  69.           <token type="Name"/>
    
  70.           <token type="Operator"/>
    
  71.           <token type="Name"/>
    
  72.           <token type="Punctuation"/>
    
  73.         </bygroups>
    
  74.       </rule>
    
  75.       <rule>
    
  76.         <include state="keywords"/>
    
  77.       </rule>
    
  78.       <rule pattern="(def|property)(\s+)">
    
  79.         <bygroups>
    
  80.           <token type="Keyword"/>
    
  81.           <token type="Text"/>
    
  82.         </bygroups>
    
  83.         <push state="funcname"/>
    
  84.       </rule>
    
  85.       <rule pattern="(cp?def)(\s+)">
    
  86.         <bygroups>
    
  87.           <token type="Keyword"/>
    
  88.           <token type="Text"/>
    
  89.         </bygroups>
    
  90.         <push state="cdef"/>
    
  91.       </rule>
    
  92.       <rule pattern="(cdef)(:)">
    
  93.         <bygroups>
    
  94.           <token type="Keyword"/>
    
  95.           <token type="Punctuation"/>
    
  96.         </bygroups>
    
  97.       </rule>
    
  98.       <rule pattern="(class|struct)(\s+)">
    
  99.         <bygroups>
    
  100.           <token type="Keyword"/>
    
  101.           <token type="Text"/>
    
  102.         </bygroups>
    
  103.         <push state="classname"/>
    
  104.       </rule>
    
  105.       <rule pattern="(from)(\s+)">
    
  106.         <bygroups>
    
  107.           <token type="Keyword"/>
    
  108.           <token type="Text"/>
    
  109.         </bygroups>
    
  110.         <push state="fromimport"/>
    
  111.       </rule>
    
  112.       <rule pattern="(c?import)(\s+)">
    
  113.         <bygroups>
    
  114.           <token type="Keyword"/>
    
  115.           <token type="Text"/>
    
  116.         </bygroups>
    
  117.         <push state="import"/>
    
  118.       </rule>
    
  119.       <rule>
    
  120.         <include state="builtins"/>
    
  121.       </rule>
    
  122.       <rule>
    
  123.         <include state="backtick"/>
    
  124.       </rule>
    
  125.       <rule pattern="(?:[rR]|[uU][rR]|[rR][uU])&#34;&#34;&#34;">
    
  126.         <token type="LiteralString"/>
    
  127.         <push state="tdqs"/>
    
  128.       </rule>
    
  129.       <rule pattern="(?:[rR]|[uU][rR]|[rR][uU])&#39;&#39;&#39;">
    
  130.         <token type="LiteralString"/>
    
  131.         <push state="tsqs"/>
    
  132.       </rule>
    
  133.       <rule pattern="(?:[rR]|[uU][rR]|[rR][uU])&#34;">
    
  134.         <token type="LiteralString"/>
    
  135.         <push state="dqs"/>
    
  136.       </rule>
    
  137.       <rule pattern="(?:[rR]|[uU][rR]|[rR][uU])&#39;">
    
  138.         <token type="LiteralString"/>
    
  139.         <push state="sqs"/>
    
  140.       </rule>
    
  141.       <rule pattern="[uU]?&#34;&#34;&#34;">
    
  142.         <token type="LiteralString"/>
    
  143.         <combined state="stringescape" state="tdqs"/>
    
  144.       </rule>
    
  145.       <rule pattern="[uU]?&#39;&#39;&#39;">
    
  146.         <token type="LiteralString"/>
    
  147.         <combined state="stringescape" state="tsqs"/>
    
  148.       </rule>
    
  149.       <rule pattern="[uU]?&#34;">
    
  150.         <token type="LiteralString"/>
    
  151.         <combined state="stringescape" state="dqs"/>
    
  152.       </rule>
    
  153.       <rule pattern="[uU]?&#39;">
    
  154.         <token type="LiteralString"/>
    
  155.         <combined state="stringescape" state="sqs"/>
    
  156.       </rule>
    
  157.       <rule>
    
  158.         <include state="name"/>
    
  159.       </rule>
    
  160.       <rule>
    
  161.         <include state="numbers"/>
    
  162.       </rule>
    
  163.     </state>
    
  164.     <state name="stringescape">
    
  165.       <rule pattern="\\([\\abfnrtv&#34;\&#39;]|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})">
    
  166.         <token type="LiteralStringEscape"/>
    
  167.       </rule>
    
  168.     </state>
    
  169.     <state name="strings">
    
  170.       <rule pattern="%(\([a-zA-Z0-9]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]">
    
  171.         <token type="LiteralStringInterpol"/>
    
  172.       </rule>
    
  173.       <rule pattern="[^\\\&#39;&#34;%\n]+">
    
  174.         <token type="LiteralString"/>
    
  175.       </rule>
    
  176.       <rule pattern="[\&#39;&#34;\\]">
    
  177.         <token type="LiteralString"/>
    
  178.       </rule>
    
  179.       <rule pattern="%">
    
  180.         <token type="LiteralString"/>
    
  181.       </rule>
    
  182.     </state>
    
  183.     <state name="backtick">
    
  184.       <rule pattern="`.*?`">
    
  185.         <token type="LiteralStringBacktick"/>
    
  186.       </rule>
    
  187.     </state>
    
  188.     <state name="numbers">
    
  189.       <rule pattern="(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?">
    
  190.         <token type="LiteralNumberFloat"/>
    
  191.       </rule>
    
  192.       <rule pattern="0\d+">
    
  193.         <token type="LiteralNumberOct"/>
    
  194.       </rule>
    
  195.       <rule pattern="0[xX][a-fA-F0-9]+">
    
  196.         <token type="LiteralNumberHex"/>
    
  197.       </rule>
    
  198.       <rule pattern="\d+L">
    
  199.         <token type="LiteralNumberIntegerLong"/>
    
  200.       </rule>
    
  201.       <rule pattern="\d+">
    
  202.         <token type="LiteralNumberInteger"/>
    
  203.       </rule>
    
  204.     </state>
    
  205.     <state name="keywords">
    
  206.       <rule pattern="(continue|ctypedef|except\?|include|finally|global|return|lambda|assert|except|print|nogil|while|fused|yield|break|raise|exec|else|elif|pass|with|gil|for|try|del|by|as|if)\b">
    
  207.         <token type="Keyword"/>
    
  208.       </rule>
    
  209.       <rule pattern="(DEF|IF|ELIF|ELSE)\b">
    
  210.         <token type="CommentPreproc"/>
    
  211.       </rule>
    
  212.     </state>
    
  213.     <state name="fromimport">
    
  214.       <rule pattern="(\s+)(c?import)\b">
    
  215.         <bygroups>
    
  216.           <token type="Text"/>
    
  217.           <token type="Keyword"/>
    
  218.         </bygroups>
    
  219.         <pop depth="1"/>
    
  220.       </rule>
    
  221.       <rule pattern="[a-zA-Z_.][\w.]*">
    
  222.         <token type="NameNamespace"/>
    
  223.       </rule>
    
  224.       <rule>
    
  225.         <pop depth="1"/>
    
  226.       </rule>
    
  227.     </state>
    
  228.     <state name="nl">
    
  229.       <rule pattern="\n">
    
  230.         <token type="LiteralString"/>
    
  231.       </rule>
    
  232.     </state>
    
  233.     <state name="dqs">
    
  234.       <rule pattern="&#34;">
    
  235.         <token type="LiteralString"/>
    
  236.         <pop depth="1"/>
    
  237.       </rule>
    
  238.       <rule pattern="\\\\|\\&#34;|\\\n">
    
  239.         <token type="LiteralStringEscape"/>
    
  240.       </rule>
    
  241.       <rule>
    
  242.         <include state="strings"/>
    
  243.       </rule>
    
  244.     </state>
    
  245.     <state name="tsqs">
    
  246.       <rule pattern="&#39;&#39;&#39;">
    
  247.         <token type="LiteralString"/>
    
  248.         <pop depth="1"/>
    
  249.       </rule>
    
  250.       <rule>
    
  251.         <include state="strings"/>
    
  252.       </rule>
    
  253.       <rule>
    
  254.         <include state="nl"/>
    
  255.       </rule>
    
  256.     </state>
    
  257.     <state name="import">
    
  258.       <rule pattern="(\s+)(as)(\s+)">
    
  259.         <bygroups>
    
  260.           <token type="Text"/>
    
  261.           <token type="Keyword"/>
    
  262.           <token type="Text"/>
    
  263.         </bygroups>
    
  264.       </rule>
    
  265.       <rule pattern="[a-zA-Z_][\w.]*">
    
  266.         <token type="NameNamespace"/>
    
  267.       </rule>
    
  268.       <rule pattern="(\s*)(,)(\s*)">
    
  269.         <bygroups>
    
  270.           <token type="Text"/>
    
  271.           <token type="Operator"/>
    
  272.           <token type="Text"/>
    
  273.         </bygroups>
    
  274.       </rule>
    
  275.       <rule>
    
  276.         <pop depth="1"/>
    
  277.       </rule>
    
  278.     </state>
    
  279.     <state name="name">
    
  280.       <rule pattern="@\w+">
    
  281.         <token type="NameDecorator"/>
    
  282.       </rule>
    
  283.       <rule pattern="[a-zA-Z_]\w*">
    
  284.         <token type="Name"/>
    
  285.       </rule>
    
  286.     </state>
    
  287.     <state name="cdef">
    
  288.       <rule pattern="(public|readonly|extern|api|inline)\b">
    
  289.         <token type="KeywordReserved"/>
    
  290.       </rule>
    
  291.       <rule pattern="(struct|enum|union|class)\b">
    
  292.         <token type="Keyword"/>
    
  293.       </rule>
    
  294.       <rule pattern="([a-zA-Z_]\w*)(\s*)(?=[(:#=]|$)">
    
  295.         <bygroups>
    
  296.           <token type="NameFunction"/>
    
  297.           <token type="Text"/>
    
  298.         </bygroups>
    
  299.         <pop depth="1"/>
    
  300.       </rule>
    
  301.       <rule pattern="([a-zA-Z_]\w*)(\s*)(,)">
    
  302.         <bygroups>
    
  303.           <token type="NameFunction"/>
    
  304.           <token type="Text"/>
    
  305.           <token type="Punctuation"/>
    
  306.         </bygroups>
    
  307.       </rule>
    
  308.       <rule pattern="from\b">
    
  309.         <token type="Keyword"/>
    
  310.         <pop depth="1"/>
    
  311.       </rule>
    
  312.       <rule pattern="as\b">
    
  313.         <token type="Keyword"/>
    
  314.       </rule>
    
  315.       <rule pattern=":">
    
  316.         <token type="Punctuation"/>
    
  317.         <pop depth="1"/>
    
  318.       </rule>
    
  319.       <rule pattern="(?=[&#34;\&#39;])">
    
  320.         <token type="Text"/>
    
  321.         <pop depth="1"/>
    
  322.       </rule>
    
  323.       <rule pattern="[a-zA-Z_]\w*">
    
  324.         <token type="KeywordType"/>
    
  325.       </rule>
    
  326.       <rule pattern=".">
    
  327.         <token type="Text"/>
    
  328.       </rule>
    
  329.     </state>
    
  330.     <state name="classname">
    
  331.       <rule pattern="[a-zA-Z_]\w*">
    
  332.         <token type="NameClass"/>
    
  333.         <pop depth="1"/>
    
  334.       </rule>
    
  335.     </state>
    
  336.     <state name="sqs">
    
  337.       <rule pattern="&#39;">
    
  338.         <token type="LiteralString"/>
    
  339.         <pop depth="1"/>
    
  340.       </rule>
    
  341.       <rule pattern="\\\\|\\&#39;|\\\n">
    
  342.         <token type="LiteralStringEscape"/>
    
  343.       </rule>
    
  344.       <rule>
    
  345.         <include state="strings"/>
    
  346.       </rule>
    
  347.     </state>
    
  348.     <state name="tdqs">
    
  349.       <rule pattern="&#34;&#34;&#34;">
    
  350.         <token type="LiteralString"/>
    
  351.         <pop depth="1"/>
    
  352.       </rule>
    
  353.       <rule>
    
  354.         <include state="strings"/>
    
  355.       </rule>
    
  356.       <rule>
    
  357.         <include state="nl"/>
    
  358.       </rule>
    
  359.     </state>
    
  360.     <state name="builtins">
    
  361.       <rule pattern="(?&lt;!\.)(staticmethod|classmethod|__import__|issubclass|isinstance|basestring|bytearray|raw_input|frozenset|enumerate|property|unsigned|reversed|callable|execfile|hasattr|compile|complex|delattr|setattr|unicode|globals|getattr|reload|divmod|xrange|unichr|filter|reduce|buffer|intern|coerce|sorted|locals|object|round|input|range|super|tuple|bytes|float|slice|apply|bool|long|exit|vars|file|next|type|iter|open|dict|repr|hash|list|eval|oct|map|zip|int|hex|set|sum|chr|cmp|any|str|pow|ord|dir|len|min|all|abs|max|bin|id)\b">
    
  362.         <token type="NameBuiltin"/>
    
  363.       </rule>
    
  364.       <rule pattern="(?&lt;!\.)(self|None|Ellipsis|NotImplemented|False|True|NULL)\b">
    
  365.         <token type="NameBuiltinPseudo"/>
    
  366.       </rule>
    
  367.       <rule pattern="(?&lt;!\.)(PendingDeprecationWarning|UnicodeTranslateError|NotImplementedError|FloatingPointError|DeprecationWarning|UnicodeDecodeError|UnicodeEncodeError|UnboundLocalError|KeyboardInterrupt|ZeroDivisionError|IndentationError|EnvironmentError|OverflowWarning|ArithmeticError|RuntimeWarning|UnicodeWarning|AttributeError|AssertionError|NotImplemented|ReferenceError|StopIteration|SyntaxWarning|OverflowError|GeneratorExit|FutureWarning|BaseException|ImportWarning|StandardError|RuntimeError|UnicodeError|LookupError|ImportError|SyntaxError|MemoryError|SystemError|UserWarning|SystemExit|ValueError|IndexError|NameError|TypeError|Exception|KeyError|EOFError|TabError|OSError|Warning|IOError)\b">
    
  368.         <token type="NameException"/>
    
  369.       </rule>
    
  370.     </state>
    
  371.   </rules>
    
  372. </lexer>