1. <lexer>
    
  2.   <config>
    
  3.     <name>Factor</name>
    
  4.     <alias>factor</alias>
    
  5.     <filename>*.factor</filename>
    
  6.     <mime_type>text/x-factor</mime_type>
    
  7.   </config>
    
  8.   <rules>
    
  9.     <state name="base">
    
  10.       <rule pattern="\s+">
    
  11.         <token type="Text"/>
    
  12.       </rule>
    
  13.       <rule pattern="((?:MACRO|MEMO|TYPED)?:[:]?)(\s+)(\S+)">
    
  14.         <bygroups>
    
  15.           <token type="Keyword"/>
    
  16.           <token type="Text"/>
    
  17.           <token type="NameFunction"/>
    
  18.         </bygroups>
    
  19.       </rule>
    
  20.       <rule pattern="(M:[:]?)(\s+)(\S+)(\s+)(\S+)">
    
  21.         <bygroups>
    
  22.           <token type="Keyword"/>
    
  23.           <token type="Text"/>
    
  24.           <token type="NameClass"/>
    
  25.           <token type="Text"/>
    
  26.           <token type="NameFunction"/>
    
  27.         </bygroups>
    
  28.       </rule>
    
  29.       <rule pattern="(C:)(\s+)(\S+)(\s+)(\S+)">
    
  30.         <bygroups>
    
  31.           <token type="Keyword"/>
    
  32.           <token type="Text"/>
    
  33.           <token type="NameFunction"/>
    
  34.           <token type="Text"/>
    
  35.           <token type="NameClass"/>
    
  36.         </bygroups>
    
  37.       </rule>
    
  38.       <rule pattern="(GENERIC:)(\s+)(\S+)">
    
  39.         <bygroups>
    
  40.           <token type="Keyword"/>
    
  41.           <token type="Text"/>
    
  42.           <token type="NameFunction"/>
    
  43.         </bygroups>
    
  44.       </rule>
    
  45.       <rule pattern="(HOOK:|GENERIC#)(\s+)(\S+)(\s+)(\S+)">
    
  46.         <bygroups>
    
  47.           <token type="Keyword"/>
    
  48.           <token type="Text"/>
    
  49.           <token type="NameFunction"/>
    
  50.           <token type="Text"/>
    
  51.           <token type="NameFunction"/>
    
  52.         </bygroups>
    
  53.       </rule>
    
  54.       <rule pattern="\(\s">
    
  55.         <token type="NameFunction"/>
    
  56.         <push state="stackeffect"/>
    
  57.       </rule>
    
  58.       <rule pattern=";\s">
    
  59.         <token type="Keyword"/>
    
  60.       </rule>
    
  61.       <rule pattern="(USING:)(\s+)">
    
  62.         <bygroups>
    
  63.           <token type="KeywordNamespace"/>
    
  64.           <token type="Text"/>
    
  65.         </bygroups>
    
  66.         <push state="vocabs"/>
    
  67.       </rule>
    
  68.       <rule pattern="(USE:|UNUSE:|IN:|QUALIFIED:)(\s+)(\S+)">
    
  69.         <bygroups>
    
  70.           <token type="KeywordNamespace"/>
    
  71.           <token type="Text"/>
    
  72.           <token type="NameNamespace"/>
    
  73.         </bygroups>
    
  74.       </rule>
    
  75.       <rule pattern="(QUALIFIED-WITH:)(\s+)(\S+)(\s+)(\S+)">
    
  76.         <bygroups>
    
  77.           <token type="KeywordNamespace"/>
    
  78.           <token type="Text"/>
    
  79.           <token type="NameNamespace"/>
    
  80.           <token type="Text"/>
    
  81.           <token type="NameNamespace"/>
    
  82.         </bygroups>
    
  83.       </rule>
    
  84.       <rule pattern="(FROM:|EXCLUDE:)(\s+)(\S+)(\s+=&gt;\s)">
    
  85.         <bygroups>
    
  86.           <token type="KeywordNamespace"/>
    
  87.           <token type="Text"/>
    
  88.           <token type="NameNamespace"/>
    
  89.           <token type="Text"/>
    
  90.         </bygroups>
    
  91.         <push state="words"/>
    
  92.       </rule>
    
  93.       <rule pattern="(RENAME:)(\s+)(\S+)(\s+)(\S+)(\s+=&gt;\s+)(\S+)">
    
  94.         <bygroups>
    
  95.           <token type="KeywordNamespace"/>
    
  96.           <token type="Text"/>
    
  97.           <token type="NameFunction"/>
    
  98.           <token type="Text"/>
    
  99.           <token type="NameNamespace"/>
    
  100.           <token type="Text"/>
    
  101.           <token type="NameFunction"/>
    
  102.         </bygroups>
    
  103.       </rule>
    
  104.       <rule pattern="(ALIAS:|TYPEDEF:)(\s+)(\S+)(\s+)(\S+)">
    
  105.         <bygroups>
    
  106.           <token type="KeywordNamespace"/>
    
  107.           <token type="Text"/>
    
  108.           <token type="NameFunction"/>
    
  109.           <token type="Text"/>
    
  110.           <token type="NameFunction"/>
    
  111.         </bygroups>
    
  112.       </rule>
    
  113.       <rule pattern="(DEFER:|FORGET:|POSTPONE:)(\s+)(\S+)">
    
  114.         <bygroups>
    
  115.           <token type="KeywordNamespace"/>
    
  116.           <token type="Text"/>
    
  117.           <token type="NameFunction"/>
    
  118.         </bygroups>
    
  119.       </rule>
    
  120.       <rule pattern="(TUPLE:|ERROR:)(\s+)(\S+)(\s+&lt;\s+)(\S+)">
    
  121.         <bygroups>
    
  122.           <token type="Keyword"/>
    
  123.           <token type="Text"/>
    
  124.           <token type="NameClass"/>
    
  125.           <token type="Text"/>
    
  126.           <token type="NameClass"/>
    
  127.         </bygroups>
    
  128.         <push state="slots"/>
    
  129.       </rule>
    
  130.       <rule pattern="(TUPLE:|ERROR:|BUILTIN:)(\s+)(\S+)">
    
  131.         <bygroups>
    
  132.           <token type="Keyword"/>
    
  133.           <token type="Text"/>
    
  134.           <token type="NameClass"/>
    
  135.         </bygroups>
    
  136.         <push state="slots"/>
    
  137.       </rule>
    
  138.       <rule pattern="(MIXIN:|UNION:|INTERSECTION:)(\s+)(\S+)">
    
  139.         <bygroups>
    
  140.           <token type="Keyword"/>
    
  141.           <token type="Text"/>
    
  142.           <token type="NameClass"/>
    
  143.         </bygroups>
    
  144.       </rule>
    
  145.       <rule pattern="(PREDICATE:)(\s+)(\S+)(\s+&lt;\s+)(\S+)">
    
  146.         <bygroups>
    
  147.           <token type="Keyword"/>
    
  148.           <token type="Text"/>
    
  149.           <token type="NameClass"/>
    
  150.           <token type="Text"/>
    
  151.           <token type="NameClass"/>
    
  152.         </bygroups>
    
  153.       </rule>
    
  154.       <rule pattern="(C:)(\s+)(\S+)(\s+)(\S+)">
    
  155.         <bygroups>
    
  156.           <token type="Keyword"/>
    
  157.           <token type="Text"/>
    
  158.           <token type="NameFunction"/>
    
  159.           <token type="Text"/>
    
  160.           <token type="NameClass"/>
    
  161.         </bygroups>
    
  162.       </rule>
    
  163.       <rule pattern="(INSTANCE:)(\s+)(\S+)(\s+)(\S+)">
    
  164.         <bygroups>
    
  165.           <token type="Keyword"/>
    
  166.           <token type="Text"/>
    
  167.           <token type="NameClass"/>
    
  168.           <token type="Text"/>
    
  169.           <token type="NameClass"/>
    
  170.         </bygroups>
    
  171.       </rule>
    
  172.       <rule pattern="(SLOT:)(\s+)(\S+)">
    
  173.         <bygroups>
    
  174.           <token type="Keyword"/>
    
  175.           <token type="Text"/>
    
  176.           <token type="NameFunction"/>
    
  177.         </bygroups>
    
  178.       </rule>
    
  179.       <rule pattern="(SINGLETON:)(\s+)(\S+)">
    
  180.         <bygroups>
    
  181.           <token type="Keyword"/>
    
  182.           <token type="Text"/>
    
  183.           <token type="NameClass"/>
    
  184.         </bygroups>
    
  185.       </rule>
    
  186.       <rule pattern="SINGLETONS:">
    
  187.         <token type="Keyword"/>
    
  188.         <push state="classes"/>
    
  189.       </rule>
    
  190.       <rule pattern="(CONSTANT:|SYMBOL:|MAIN:|HELP:)(\s+)(\S+)">
    
  191.         <bygroups>
    
  192.           <token type="Keyword"/>
    
  193.           <token type="Text"/>
    
  194.           <token type="NameFunction"/>
    
  195.         </bygroups>
    
  196.       </rule>
    
  197.       <rule pattern="SYMBOLS:\s">
    
  198.         <token type="Keyword"/>
    
  199.         <push state="words"/>
    
  200.       </rule>
    
  201.       <rule pattern="SYNTAX:\s">
    
  202.         <token type="Keyword"/>
    
  203.       </rule>
    
  204.       <rule pattern="ALIEN:\s">
    
  205.         <token type="Keyword"/>
    
  206.       </rule>
    
  207.       <rule pattern="(STRUCT:)(\s+)(\S+)">
    
  208.         <bygroups>
    
  209.           <token type="Keyword"/>
    
  210.           <token type="Text"/>
    
  211.           <token type="NameClass"/>
    
  212.         </bygroups>
    
  213.       </rule>
    
  214.       <rule pattern="(FUNCTION:)(\s+\S+\s+)(\S+)(\s+\(\s+[^)]+\)\s)">
    
  215.         <bygroups>
    
  216.           <token type="KeywordNamespace"/>
    
  217.           <token type="Text"/>
    
  218.           <token type="NameFunction"/>
    
  219.           <token type="Text"/>
    
  220.         </bygroups>
    
  221.       </rule>
    
  222.       <rule pattern="(FUNCTION-ALIAS:)(\s+)(\S+)(\s+\S+\s+)(\S+)(\s+\(\s+[^)]+\)\s)">
    
  223.         <bygroups>
    
  224.           <token type="KeywordNamespace"/>
    
  225.           <token type="Text"/>
    
  226.           <token type="NameFunction"/>
    
  227.           <token type="Text"/>
    
  228.           <token type="NameFunction"/>
    
  229.           <token type="Text"/>
    
  230.         </bygroups>
    
  231.       </rule>
    
  232.       <rule pattern="(?:&lt;PRIVATE|PRIVATE&gt;)\s">
    
  233.         <token type="KeywordNamespace"/>
    
  234.       </rule>
    
  235.       <rule pattern="&#34;&#34;&#34;\s+(?:.|\n)*?\s+&#34;&#34;&#34;">
    
  236.         <token type="LiteralString"/>
    
  237.       </rule>
    
  238.       <rule pattern="&#34;(?:\\\\|\\&#34;|[^&#34;])*&#34;">
    
  239.         <token type="LiteralString"/>
    
  240.       </rule>
    
  241.       <rule pattern="\S+&#34;\s+(?:\\\\|\\&#34;|[^&#34;])*&#34;">
    
  242.         <token type="LiteralString"/>
    
  243.       </rule>
    
  244.       <rule pattern="CHAR:\s+(?:\\[\\abfnrstv]|[^\\]\S*)\s">
    
  245.         <token type="LiteralStringChar"/>
    
  246.       </rule>
    
  247.       <rule pattern="!\s+.*$">
    
  248.         <token type="Comment"/>
    
  249.       </rule>
    
  250.       <rule pattern="#!\s+.*$">
    
  251.         <token type="Comment"/>
    
  252.       </rule>
    
  253.       <rule pattern="/\*\s+(?:.|\n)*?\s\*/\s">
    
  254.         <token type="Comment"/>
    
  255.       </rule>
    
  256.       <rule pattern="[tf]\s">
    
  257.         <token type="NameConstant"/>
    
  258.       </rule>
    
  259.       <rule pattern="[\\$]\s+\S+">
    
  260.         <token type="NameConstant"/>
    
  261.       </rule>
    
  262.       <rule pattern="M\\\s+\S+\s+\S+">
    
  263.         <token type="NameConstant"/>
    
  264.       </rule>
    
  265.       <rule pattern="[+-]?(?:[\d,]*\d)?\.(?:\d([\d,]*\d)?)?(?:[eE][+-]?\d+)?\s">
    
  266.         <token type="LiteralNumber"/>
    
  267.       </rule>
    
  268.       <rule pattern="[+-]?\d(?:[\d,]*\d)?(?:[eE][+-]?\d+)?\s">
    
  269.         <token type="LiteralNumber"/>
    
  270.       </rule>
    
  271.       <rule pattern="0x[a-fA-F\d](?:[a-fA-F\d,]*[a-fA-F\d])?(?:p\d([\d,]*\d)?)?\s">
    
  272.         <token type="LiteralNumber"/>
    
  273.       </rule>
    
  274.       <rule pattern="NAN:\s+[a-fA-F\d](?:[a-fA-F\d,]*[a-fA-F\d])?(?:p\d([\d,]*\d)?)?\s">
    
  275.         <token type="LiteralNumber"/>
    
  276.       </rule>
    
  277.       <rule pattern="0b[01]+\s">
    
  278.         <token type="LiteralNumberBin"/>
    
  279.       </rule>
    
  280.       <rule pattern="0o[0-7]+\s">
    
  281.         <token type="LiteralNumberOct"/>
    
  282.       </rule>
    
  283.       <rule pattern="(?:\d([\d,]*\d)?)?\+\d(?:[\d,]*\d)?/\d(?:[\d,]*\d)?\s">
    
  284.         <token type="LiteralNumber"/>
    
  285.       </rule>
    
  286.       <rule pattern="(?:\-\d([\d,]*\d)?)?\-\d(?:[\d,]*\d)?/\d(?:[\d,]*\d)?\s">
    
  287.         <token type="LiteralNumber"/>
    
  288.       </rule>
    
  289.       <rule pattern="(?:deprecated|final|foldable|flushable|inline|recursive)\s">
    
  290.         <token type="Keyword"/>
    
  291.       </rule>
    
  292.       <rule pattern="(identity-hashcode|callstack&gt;array|identity-tuple\?|identity-tuple|retainstack|callstack\?|tri-curry\*|tri-curry@|tri-curry|&lt;wrapper&gt;|datastack|bi-curry@|bi-curry\*|hashcode\*|callstack|\?execute|hashcode|boolean\?|compose\?|&gt;boolean|wrapper\?|bi-curry|unless\*|boolean|assert\?|\(clone\)|either\?|prepose|assert=|execute|wrapper|compose|3curry|assert|2curry|curry\?|object|equal\?|tuple\?|unless|build|3drop|same\?|2tri\*|2tri@|both\?|3keep|4drop|throw|2over|swapd|clear|2keep|2drop|until|curry|4keep|clone|while|tuple|when\*|-rot|tri@|dupd|drop|tri\*|call|when|with|4dup|4dip|3tri|3dup|3dip|2tri|keep|loop|most|2nip|swap|2dup|null|2dip|2bi\*|2bi@|pick|over|and|rot|not|nip|new|if\*|tri|2bi|boa|eq\?|dup|3bi|dip|die|bi\*|bi@|\?if|xor|bi|do|if|or|\?|=)\s">
    
  293.         <token type="NameBuiltin"/>
    
  294.       </rule>
    
  295.       <rule pattern="(assoc-clone-like|assoc-filter-as|assoc-partition|assoc-intersect|assoc-hashcode|assoc-combine|assoc-filter!|assoc-subset\?|assoc-union!|maybe-set-at|extract-keys|assoc-map-as|assoc-differ|assoc-refine|assoc-empty\?|assoc-filter|assoc-diff!|sift-values|assoc-union|assoc-stack|clear-assoc|assoc-all\?|delete-at\*|assoc-find|substitute|assoc-each|assoc-size|assoc-diff|assoc-any\?|assoc-like|rename-at|sift-keys|new-assoc|map&gt;assoc|value-at\*|assoc-map|delete-at|change-at|assoc&gt;map|value-at|push-at|assoc=|values|set-at|&lt;enum&gt;|inc-at|2cache|value\?|assoc\?|&gt;alist|cache|enum\?|assoc|unzip|key\?|enum|keys|\?at|\?of|zip|at\+|at\*|at|of)\s">
    
  296.         <token type="NameBuiltin"/>
    
  297.       </rule>
    
  298.       <rule pattern="(shallow-spread&gt;quot|recursive-hashcode|linear-case-quot|deep-spread&gt;quot|to-fixed-point|execute-effect|wrong-values\?|4cleave&gt;quot|2cleave&gt;quot|wrong-values|3cleave&gt;quot|cleave&gt;quot|call-effect|alist&gt;quot|case&gt;quot|case-find|cond&gt;quot|no-case\?|no-cond\?|no-case|no-cond|4cleave|3cleave|2cleave|cleave|spread|cond|case)\s">
    
  299.         <token type="NameBuiltin"/>
    
  300.       </rule>
    
  301.       <rule pattern="(log2-expects-positive\?|integer&gt;fixnum-strict|log2-expects-positive|out-of-fixnum-range\?|out-of-fixnum-range|find-last-integer|next-power-of-2|\(all-integers\?\)|integer&gt;fixnum|\(find-integer\)|\(each-integer\)|imaginary-part|fp-nan-payload|all-integers\?|find-integer|each-integer|fp-infinity\?|fp-special\?|fp-bitwise=|bits&gt;double|double&gt;bits|power-of-2\?|unless-zero|denominator|next-float|bits&gt;float|float&gt;bits|prev-float|unordered\?|real-part|when-zero|numerator|rational\?|&gt;integer|rational|complex\?|&lt;fp-nan&gt;|fp-qnan\?|fp-snan\?|integer\?|number=|bignum\?|integer|&gt;fixnum|fp-sign|fp-nan\?|fixnum\?|number\?|complex|if-zero|&gt;bignum|bignum|number|fixnum|float\?|bitxor|ratio\?|bitnot|bitand|&gt;float|real\?|bitor|zero\?|even\?|times|shift|float|recip|align|ratio|neg\?|real|log2|bit\?|odd\?|/mod|\?1\+|mod|rem|neg|sgn|u&lt;=|u&gt;=|abs|u&gt;|2/|2\^|/i|/f|sq|&lt;=|u&lt;|&gt;=|-|\+|&lt;|\*|/|&gt;)\s">
    
  302.         <token type="NameBuiltin"/>
    
  303.       </rule>
    
  304.       <rule pattern="(non-negative-integer-expected\?|non-negative-integer-expected|immutable-sequence\?|immutable-sequence|virtual-sequence\?|sequence-hashcode|cartesian-product|check-slice-error|unclip-last-slice|assert-sequence=|assert-sequence\?|virtual-exemplar|virtual-sequence|assert-sequence|trim-head-slice|last-index-from|find-index-from|trim-tail-slice|find-last-from|cartesian-each|collapse-slice|but-last-slice|map-find-last|cartesian-map|collector-for|bounds-error\?|accumulate-as|replace-slice|bounds-check\?|binary-reduce|new-resizable|unless-empty|delete-slice|replicate-as|map-integers|selector-for|bounds-check|reduce-index|bounds-error|unclip-slice|new-sequence|&lt;repetition&gt;|slice-error\?|slice-error|unclip-last|drop-prefix|supremum-by|push-either|2map-reduce|accumulate!|tail-slice\*|repetition\?|check-slice|iota-tuple\?|remove-nth!|sum-lengths|head-slice\*|find-index|clone-like|delete-all|change-nth|prepend-as|member-eq\?|max-length|each-index|map-reduce|iota-tuple|produce-as|snip-slice|accumulate|remove-eq!|last-index|min-length|remove-nth|&lt;reversed&gt;|repetition|tail-slice|3append-as|when-empty|interleave|insert-nth|infimum-by|index-from|set-second|immutable\?|rest-slice|set-fourth|head-slice|trim-slice|set-length|set-third|concat-as|immutable|trim-tail|cut-slice|collector|set-first|sequence\?|sequence=|midpoint@|trim-head|each-from|reversed\?|map-index|partition|find-last|2selector|2sequence|replicate|find-from|filter-as|3sequence|append-as|4sequence|remove-eq|1sequence|virtual@|push-all|lengthen|shorter\?|map-find|reverse!|reversed|exchange|pad-tail|pad-head|surround|selector|shortest|sequence|set-last|mismatch|supremum|new-like|if-empty|but-last|\?set-nth|filter!|harvest|member\?|map-sum|indices|padding|set-nth|2map-as|shorter|shorten|prepend|infimum|2reduce|append!|product|subseq\?|longest|longer\?|push-if|suffix!|reverse|join-as|remove!|3append|\?second|3map-as|&lt;slice&gt;|produce|length|\?first|start\*|longer|remove|subseq|unclip|first2|first3|reduce|second|follow|filter|slice\?|map-as|empty\?|fourth|suffix|halves|concat|first4|prefix|append|index|short|2all\?|count|2each|third|tail\*|slice|first|tail\?|head\*|3each|head\?|start|\?last|join|iota|last|like|snip|map!|head|glue|move|tail|2map|find|sift|flip|nths|trim|each|cut\*|3map|pop\*|copy|any\?|all\?|\?nth|push|rest|sum|nth|pop|map|cut)\s">
    
  305.         <token type="NameBuiltin"/>
    
  306.       </rule>
    
  307.       <rule pattern="(init-namespaces|with-variables|with-variable|set-namestack|change-global|with-global|initialize|get-global|set-global|with-scope|make-assoc|is-global|namespace|namestack|counter|change|toggle|global|set|get|dec|off|inc|on|\+@)\s">
    
  308.         <token type="NameBuiltin"/>
    
  309.       </rule>
    
  310.       <rule pattern="(resize-array|&lt;array&gt;|1array|2array|3array|4array|&gt;array|array\?|array|pair\?|pair)\s">
    
  311.         <token type="NameBuiltin"/>
    
  312.       </rule>
    
  313.       <rule pattern="(\(stream-contents-by-length-or-block\)|with-input-output\+error-streams\*|with-input-output\+error-streams|\(stream-contents-by-element\)|\(stream-contents-by-length\)|stream-read-partial-unsafe|\(stream-contents-by-block\)|with-output\+error-stream\*|\(each-stream-block-slice\)|stream-read-partial-into|with-output\+error-stream|each-stream-block-slice|invalid-read-buffer\?|stream-read-partial|stream-element-type|\(each-stream-block\)|with-output-stream\*|invalid-read-buffer|with-output-stream|with-input-stream\*|stream-read-unsafe|with-error-stream\*|with-error-stream|stream-read-until|each-stream-block|with-output&gt;error|with-input-stream|with-error&gt;output|read-partial-into|stream-contents\*|each-stream-line|stream-seekable\?|stream-read-into|each-block-slice|each-block-size|stream-contents|bad-seek-type\?|seek-absolute\?|output-stream\?|seek-relative\?|stream-write1|with-streams\*|output-stream|stream-length|bad-seek-type|seek-absolute|input-stream\?|stream-readln|seek-relative|with-streams|read-partial|stream-copy\*|stream-flush|stream-read1|stream-lines|stream-write|stream-print|error-stream|input-stream|stream-tell|\+character\+|stream-copy|each-morsel|seek-output|stream-read|tell-output|stream-seek|read-until|seek-input|each-block|tell-input|each-line|seek-end\?|read-into|stream-nl|stream-bl|contents|seek-end|write1|\+byte\+|readln|write|read1|print|flush|lines|read|nl|bl)\s">
    
  314.         <token type="NameBuiltin"/>
    
  315.       </rule>
    
  316.       <rule pattern="(resize-string|&lt;string&gt;|1string|&gt;string|string\?|string)\s">
    
  317.         <token type="NameBuiltin"/>
    
  318.       </rule>
    
  319.       <rule pattern="(&lt;vector&gt;|1vector|&gt;vector|vector\?|vector|\?push)\s">
    
  320.         <token type="NameBuiltin"/>
    
  321.       </rule>
    
  322.       <rule pattern="(current-continuation|return-continuation|callback-error-hook|error-continuation|attempt-all-error\?|thread-error-hook|attempt-all-error|rethrow-restarts|continue-restart|compute-restarts|error-in-thread|throw-continue|throw-restarts|with-datastack|&lt;continuation&gt;|original-error|ignore-errors|continue-with|continuation\?|in-callback\?|continuation|error-thread|attempt-all|&lt;condition&gt;|with-return|condition\?|&lt;restart&gt;|condition|continue|restart\?|restarts|rethrow|callcc0|recover|restart|cleanup|callcc1|return|error|ifcc)\s">
    
  323.         <token type="NameBuiltin"/>
    
  324.       </rule>
    
  325.       <rule pattern="\S+">
    
  326.         <token type="Text"/>
    
  327.       </rule>
    
  328.     </state>
    
  329.     <state name="stackeffect">
    
  330.       <rule pattern="\s+">
    
  331.         <token type="Text"/>
    
  332.       </rule>
    
  333.       <rule pattern="\(\s+">
    
  334.         <token type="NameFunction"/>
    
  335.         <push state="stackeffect"/>
    
  336.       </rule>
    
  337.       <rule pattern="\)\s">
    
  338.         <token type="NameFunction"/>
    
  339.         <pop depth="1"/>
    
  340.       </rule>
    
  341.       <rule pattern="--\s">
    
  342.         <token type="NameFunction"/>
    
  343.       </rule>
    
  344.       <rule pattern="\S+">
    
  345.         <token type="NameVariable"/>
    
  346.       </rule>
    
  347.     </state>
    
  348.     <state name="slots">
    
  349.       <rule pattern="\s+">
    
  350.         <token type="Text"/>
    
  351.       </rule>
    
  352.       <rule pattern=";\s">
    
  353.         <token type="Keyword"/>
    
  354.         <pop depth="1"/>
    
  355.       </rule>
    
  356.       <rule pattern="(\{\s+)(\S+)(\s+[^}]+\s+\}\s)">
    
  357.         <bygroups>
    
  358.           <token type="Text"/>
    
  359.           <token type="NameVariable"/>
    
  360.           <token type="Text"/>
    
  361.         </bygroups>
    
  362.       </rule>
    
  363.       <rule pattern="\S+">
    
  364.         <token type="NameVariable"/>
    
  365.       </rule>
    
  366.     </state>
    
  367.     <state name="vocabs">
    
  368.       <rule pattern="\s+">
    
  369.         <token type="Text"/>
    
  370.       </rule>
    
  371.       <rule pattern=";\s">
    
  372.         <token type="Keyword"/>
    
  373.         <pop depth="1"/>
    
  374.       </rule>
    
  375.       <rule pattern="\S+">
    
  376.         <token type="NameNamespace"/>
    
  377.       </rule>
    
  378.     </state>
    
  379.     <state name="classes">
    
  380.       <rule pattern="\s+">
    
  381.         <token type="Text"/>
    
  382.       </rule>
    
  383.       <rule pattern=";\s">
    
  384.         <token type="Keyword"/>
    
  385.         <pop depth="1"/>
    
  386.       </rule>
    
  387.       <rule pattern="\S+">
    
  388.         <token type="NameClass"/>
    
  389.       </rule>
    
  390.     </state>
    
  391.     <state name="words">
    
  392.       <rule pattern="\s+">
    
  393.         <token type="Text"/>
    
  394.       </rule>
    
  395.       <rule pattern=";\s">
    
  396.         <token type="Keyword"/>
    
  397.         <pop depth="1"/>
    
  398.       </rule>
    
  399.       <rule pattern="\S+">
    
  400.         <token type="NameFunction"/>
    
  401.       </rule>
    
  402.     </state>
    
  403.     <state name="root">
    
  404.       <rule pattern="#!.*$">
    
  405.         <token type="CommentPreproc"/>
    
  406.       </rule>
    
  407.       <rule>
    
  408.         <push state="base"/>
    
  409.       </rule>
    
  410.     </state>
    
  411.   </rules>
    
  412. </lexer>