157 lines
4.8 KiB
XML
157 lines
4.8 KiB
XML
<lexer>
|
|
<config>
|
|
<name>J</name>
|
|
<alias>j</alias>
|
|
<filename>*.ijs</filename>
|
|
<mime_type>text/x-j</mime_type>
|
|
</config>
|
|
<rules>
|
|
<state name="singlequote">
|
|
<rule pattern="[^']">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="''">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="'">
|
|
<token type="LiteralString"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
<state name="root">
|
|
<rule pattern="#!.*$">
|
|
<token type="CommentPreproc"/>
|
|
</rule>
|
|
<rule pattern="NB\..*">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="\n+\s*Note">
|
|
<token type="CommentMultiline"/>
|
|
<push state="comment"/>
|
|
</rule>
|
|
<rule pattern="\s*Note.*">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="\s+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="'">
|
|
<token type="LiteralString"/>
|
|
<push state="singlequote"/>
|
|
</rule>
|
|
<rule pattern="0\s+:\s*0|noun\s+define\s*$">
|
|
<token type="NameEntity"/>
|
|
<push state="nounDefinition"/>
|
|
</rule>
|
|
<rule pattern="(([1-4]|13)\s+:\s*0|(adverb|conjunction|dyad|monad|verb)\s+define)\b">
|
|
<token type="NameFunction"/>
|
|
<push state="explicitDefinition"/>
|
|
</rule>
|
|
<rule pattern="(label_|goto_|for_)\b[a-zA-Z]\w*\.">
|
|
<token type="NameLabel"/>
|
|
</rule>
|
|
<rule pattern="(continue|select|return|assert|catchd|catcht|elseif|whilst|break|catch|fcase|while|throw|else|case|end|try|for|do|if)\.">
|
|
<token type="NameLabel"/>
|
|
</rule>
|
|
<rule pattern="\b[a-zA-Z]\w*">
|
|
<token type="NameVariable"/>
|
|
</rule>
|
|
<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)">
|
|
<token type="NameFunction"/>
|
|
</rule>
|
|
<rule pattern="=[.:]">
|
|
<token type="Operator"/>
|
|
</rule>
|
|
<rule pattern="[-=+*#$%@!~`^&";:.,<>{}\[\]\\|/]">
|
|
<token type="Operator"/>
|
|
</rule>
|
|
<rule pattern="[abCdDeEfHiIjLMoprtT]\.">
|
|
<token type="KeywordReserved"/>
|
|
</rule>
|
|
<rule pattern="[aDiLpqsStux]\:">
|
|
<token type="KeywordReserved"/>
|
|
</rule>
|
|
<rule pattern="(_[0-9])\:">
|
|
<token type="KeywordConstant"/>
|
|
</rule>
|
|
<rule pattern="\(">
|
|
<token type="Punctuation"/>
|
|
<push state="parentheses"/>
|
|
</rule>
|
|
<rule>
|
|
<include state="numbers"/>
|
|
</rule>
|
|
</state>
|
|
<state name="comment">
|
|
<rule pattern="[^)]">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
<rule pattern="^\)">
|
|
<token type="CommentMultiline"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="[)]">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
</state>
|
|
<state name="explicitDefinition">
|
|
<rule pattern="\b[nmuvxy]\b">
|
|
<token type="NameDecorator"/>
|
|
</rule>
|
|
<rule>
|
|
<include state="root"/>
|
|
</rule>
|
|
<rule pattern="[^)]">
|
|
<token type="Name"/>
|
|
</rule>
|
|
<rule pattern="^\)">
|
|
<token type="NameLabel"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="[)]">
|
|
<token type="Name"/>
|
|
</rule>
|
|
</state>
|
|
<state name="numbers">
|
|
<rule pattern="\b_{1,2}\b">
|
|
<token type="LiteralNumber"/>
|
|
</rule>
|
|
<rule pattern="_?\d+(\.\d+)?(\s*[ejr]\s*)_?\d+(\.?=\d+)?">
|
|
<token type="LiteralNumber"/>
|
|
</rule>
|
|
<rule pattern="_?\d+\.(?=\d+)">
|
|
<token type="LiteralNumberFloat"/>
|
|
</rule>
|
|
<rule pattern="_?\d+x">
|
|
<token type="LiteralNumberIntegerLong"/>
|
|
</rule>
|
|
<rule pattern="_?\d+">
|
|
<token type="LiteralNumberInteger"/>
|
|
</rule>
|
|
</state>
|
|
<state name="nounDefinition">
|
|
<rule pattern="[^)]">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="^\)">
|
|
<token type="NameLabel"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="[)]">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
</state>
|
|
<state name="parentheses">
|
|
<rule pattern="\)">
|
|
<token type="Punctuation"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule>
|
|
<include state="explicitDefinition"/>
|
|
</rule>
|
|
<rule>
|
|
<include state="root"/>
|
|
</rule>
|
|
</state>
|
|
</rules>
|
|
</lexer> |