j.xml

  1<lexer>
  2  <config>
  3    <name>J</name>
  4    <alias>j</alias>
  5    <filename>*.ijs</filename>
  6    <mime_type>text/x-j</mime_type>
  7  </config>
  8  <rules>
  9    <state name="singlequote">
 10      <rule pattern="[^&#39;]">
 11        <token type="LiteralString"/>
 12      </rule>
 13      <rule pattern="&#39;&#39;">
 14        <token type="LiteralString"/>
 15      </rule>
 16      <rule pattern="&#39;">
 17        <token type="LiteralString"/>
 18        <pop depth="1"/>
 19      </rule>
 20    </state>
 21    <state name="root">
 22      <rule pattern="#!.*$">
 23        <token type="CommentPreproc"/>
 24      </rule>
 25      <rule pattern="NB\..*">
 26        <token type="CommentSingle"/>
 27      </rule>
 28      <rule pattern="\n+\s*Note">
 29        <token type="CommentMultiline"/>
 30        <push state="comment"/>
 31      </rule>
 32      <rule pattern="\s*Note.*">
 33        <token type="CommentSingle"/>
 34      </rule>
 35      <rule pattern="\s+">
 36        <token type="Text"/>
 37      </rule>
 38      <rule pattern="&#39;">
 39        <token type="LiteralString"/>
 40        <push state="singlequote"/>
 41      </rule>
 42      <rule pattern="0\s+:\s*0|noun\s+define\s*$">
 43        <token type="NameEntity"/>
 44        <push state="nounDefinition"/>
 45      </rule>
 46      <rule pattern="(([1-4]|13)\s+:\s*0|(adverb|conjunction|dyad|monad|verb)\s+define)\b">
 47        <token type="NameFunction"/>
 48        <push state="explicitDefinition"/>
 49      </rule>
 50      <rule pattern="(label_|goto_|for_)\b[a-zA-Z]\w*\.">
 51        <token type="NameLabel"/>
 52      </rule>
 53      <rule pattern="(continue|select|return|assert|catchd|catcht|elseif|whilst|break|catch|fcase|while|throw|else|case|end|try|for|do|if)\.">
 54        <token type="NameLabel"/>
 55      </rule>
 56      <rule pattern="\b[a-zA-Z]\w*">
 57        <token type="NameVariable"/>
 58      </rule>
 59      <rule pattern="(timespacex|fixdotdot|nameclass|namelist|file2url|tmoutput|ucpcount|boxxopen|smoutput|JVERSION|datatype|toupper|tolower|alpha17|alpha27|getargs|evtloop|boxopen|fliprgb|inverse|scriptd|iospath|cutopen|isatty|toCRLF|toHOST|isutf8|getenv|stdout|script|usleep|sminfo|expand|stderr|clear|fetch|every|erase|empty|Debug|EMPTY|split|names|timex|cutLF|stdin|apply|items|table|exit|Note|list|take|leaf|type|bind|drop|rows|each|echo|sign|CRLF|utf8|sort|pick|ARGV|uucp|ucp|DEL|inv|hfd|dfh|def|LF2|EAV|toJ|TAB|nl|FF|LF|bx|nc|CR|on)">
 60        <token type="NameFunction"/>
 61      </rule>
 62      <rule pattern="=[.:]">
 63        <token type="Operator"/>
 64      </rule>
 65      <rule pattern="[-=+*#$%@!~`^&amp;&#34;;:.,&lt;&gt;{}\[\]\\|/]">
 66        <token type="Operator"/>
 67      </rule>
 68      <rule pattern="[abCdDeEfHiIjLMoprtT]\.">
 69        <token type="KeywordReserved"/>
 70      </rule>
 71      <rule pattern="[aDiLpqsStux]\:">
 72        <token type="KeywordReserved"/>
 73      </rule>
 74      <rule pattern="(_[0-9])\:">
 75        <token type="KeywordConstant"/>
 76      </rule>
 77      <rule pattern="\(">
 78        <token type="Punctuation"/>
 79        <push state="parentheses"/>
 80      </rule>
 81      <rule>
 82        <include state="numbers"/>
 83      </rule>
 84    </state>
 85    <state name="comment">
 86      <rule pattern="[^)]">
 87        <token type="CommentMultiline"/>
 88      </rule>
 89      <rule pattern="^\)">
 90        <token type="CommentMultiline"/>
 91        <pop depth="1"/>
 92      </rule>
 93      <rule pattern="[)]">
 94        <token type="CommentMultiline"/>
 95      </rule>
 96    </state>
 97    <state name="explicitDefinition">
 98      <rule pattern="\b[nmuvxy]\b">
 99        <token type="NameDecorator"/>
100      </rule>
101      <rule>
102        <include state="root"/>
103      </rule>
104      <rule pattern="[^)]">
105        <token type="Name"/>
106      </rule>
107      <rule pattern="^\)">
108        <token type="NameLabel"/>
109        <pop depth="1"/>
110      </rule>
111      <rule pattern="[)]">
112        <token type="Name"/>
113      </rule>
114    </state>
115    <state name="numbers">
116      <rule pattern="\b_{1,2}\b">
117        <token type="LiteralNumber"/>
118      </rule>
119      <rule pattern="_?\d+(\.\d+)?(\s*[ejr]\s*)_?\d+(\.?=\d+)?">
120        <token type="LiteralNumber"/>
121      </rule>
122      <rule pattern="_?\d+\.(?=\d+)">
123        <token type="LiteralNumberFloat"/>
124      </rule>
125      <rule pattern="_?\d+x">
126        <token type="LiteralNumberIntegerLong"/>
127      </rule>
128      <rule pattern="_?\d+">
129        <token type="LiteralNumberInteger"/>
130      </rule>
131    </state>
132    <state name="nounDefinition">
133      <rule pattern="[^)]">
134        <token type="LiteralString"/>
135      </rule>
136      <rule pattern="^\)">
137        <token type="NameLabel"/>
138        <pop depth="1"/>
139      </rule>
140      <rule pattern="[)]">
141        <token type="LiteralString"/>
142      </rule>
143    </state>
144    <state name="parentheses">
145      <rule pattern="\)">
146        <token type="Punctuation"/>
147        <pop depth="1"/>
148      </rule>
149      <rule>
150        <include state="explicitDefinition"/>
151      </rule>
152      <rule>
153        <include state="root"/>
154      </rule>
155    </state>
156  </rules>
157</lexer>