272 lines
9.6 KiB
XML
272 lines
9.6 KiB
XML
|
<lexer>
|
||
|
<config>
|
||
|
<name>Tcl</name>
|
||
|
<alias>tcl</alias>
|
||
|
<filename>*.tcl</filename>
|
||
|
<filename>*.rvt</filename>
|
||
|
<mime_type>text/x-tcl</mime_type>
|
||
|
<mime_type>text/x-script.tcl</mime_type>
|
||
|
<mime_type>application/x-tcl</mime_type>
|
||
|
</config>
|
||
|
<rules>
|
||
|
<state name="command-in-bracket">
|
||
|
<rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="params-in-bracket"/>
|
||
|
</rule>
|
||
|
<rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
||
|
<token type="NameBuiltin"/>
|
||
|
<push state="params-in-bracket"/>
|
||
|
</rule>
|
||
|
<rule pattern="([\w.-]+)">
|
||
|
<token type="NameVariable"/>
|
||
|
<push state="params-in-bracket"/>
|
||
|
</rule>
|
||
|
<rule pattern="#">
|
||
|
<token type="Comment"/>
|
||
|
<push state="comment"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="command-in-paren">
|
||
|
<rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="params-in-paren"/>
|
||
|
</rule>
|
||
|
<rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
||
|
<token type="NameBuiltin"/>
|
||
|
<push state="params-in-paren"/>
|
||
|
</rule>
|
||
|
<rule pattern="([\w.-]+)">
|
||
|
<token type="NameVariable"/>
|
||
|
<push state="params-in-paren"/>
|
||
|
</rule>
|
||
|
<rule pattern="#">
|
||
|
<token type="Comment"/>
|
||
|
<push state="comment"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="command-in-brace">
|
||
|
<rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="params-in-brace"/>
|
||
|
</rule>
|
||
|
<rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
||
|
<token type="NameBuiltin"/>
|
||
|
<push state="params-in-brace"/>
|
||
|
</rule>
|
||
|
<rule pattern="([\w.-]+)">
|
||
|
<token type="NameVariable"/>
|
||
|
<push state="params-in-brace"/>
|
||
|
</rule>
|
||
|
<rule pattern="#">
|
||
|
<token type="Comment"/>
|
||
|
<push state="comment"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="basic">
|
||
|
<rule pattern="\(">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="paren"/>
|
||
|
</rule>
|
||
|
<rule pattern="\[">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="bracket"/>
|
||
|
</rule>
|
||
|
<rule pattern="\{">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="brace"/>
|
||
|
</rule>
|
||
|
<rule pattern=""">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
<push state="string"/>
|
||
|
</rule>
|
||
|
<rule pattern="(eq|ne|in|ni)\b">
|
||
|
<token type="OperatorWord"/>
|
||
|
</rule>
|
||
|
<rule pattern="!=|==|<<|>>|<=|>=|&&|\|\||\*\*|[-+~!*/%<>&^|?:]">
|
||
|
<token type="Operator"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="params-in-bracket">
|
||
|
<rule pattern="\]">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="#pop" state="#pop"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="params"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="data">
|
||
|
<rule pattern="\s+">
|
||
|
<token type="Text"/>
|
||
|
</rule>
|
||
|
<rule pattern="0x[a-fA-F0-9]+">
|
||
|
<token type="LiteralNumberHex"/>
|
||
|
</rule>
|
||
|
<rule pattern="0[0-7]+">
|
||
|
<token type="LiteralNumberOct"/>
|
||
|
</rule>
|
||
|
<rule pattern="\d+\.\d+">
|
||
|
<token type="LiteralNumberFloat"/>
|
||
|
</rule>
|
||
|
<rule pattern="\d+">
|
||
|
<token type="LiteralNumberInteger"/>
|
||
|
</rule>
|
||
|
<rule pattern="\$([\w.:-]+)">
|
||
|
<token type="NameVariable"/>
|
||
|
</rule>
|
||
|
<rule pattern="([\w.:-]+)">
|
||
|
<token type="Text"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="command">
|
||
|
<rule pattern="\b(namespace|continue|variable|uplevel|foreach|return|update|elseif|global|rename|switch|upvar|error|vwait|catch|break|unset|array|apply|trace|after|while|then|else|expr|eval|proc|for|set|if)\b">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="params"/>
|
||
|
</rule>
|
||
|
<rule pattern="\b(platform::shell|pkg::create|pkg_mkIndex|fconfigure|re_syntax|fileevent|platform|fblocked|lreverse|mathfunc|encoding|registry|lreplace|history|bgerror|llength|lsearch|linsert|lassign|lappend|refchan|unknown|package|lrepeat|msgcat|mathop|format|interp|lrange|string|source|lindex|socket|concat|regsub|regexp|loadTk|memory|binary|append|unload|subst|split|lsort|clock|close|flush|fcopy|chan|glob|time|gets|http|dict|file|puts|tell|join|read|exit|exec|open|list|scan|seek|incr|info|lset|load|dde|pwd|pid|eof|tm|cd)\b">
|
||
|
<token type="NameBuiltin"/>
|
||
|
<push state="params"/>
|
||
|
</rule>
|
||
|
<rule pattern="([\w.-]+)">
|
||
|
<token type="NameVariable"/>
|
||
|
<push state="params"/>
|
||
|
</rule>
|
||
|
<rule pattern="#">
|
||
|
<token type="Comment"/>
|
||
|
<push state="comment"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="params-in-brace">
|
||
|
<rule pattern="\}">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="#pop" state="#pop"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="params"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="string-square">
|
||
|
<rule pattern="\[">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
<push state="string-square"/>
|
||
|
</rule>
|
||
|
<rule pattern="(?s)(\\\\|\\[0-7]+|\\.|\\\n|[^\]\\])">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
</rule>
|
||
|
<rule pattern="\]">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="bracket">
|
||
|
<rule pattern="\]">
|
||
|
<token type="Keyword"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="command-in-bracket"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="basic"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="data"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="params-in-paren">
|
||
|
<rule pattern="\)">
|
||
|
<token type="Keyword"/>
|
||
|
<push state="#pop" state="#pop"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="params"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="paren">
|
||
|
<rule pattern="\)">
|
||
|
<token type="Keyword"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="command-in-paren"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="basic"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="data"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="comment">
|
||
|
<rule pattern=".*[^\\]\n">
|
||
|
<token type="Comment"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule pattern=".*\\\n">
|
||
|
<token type="Comment"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="root">
|
||
|
<rule>
|
||
|
<include state="command"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="basic"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="data"/>
|
||
|
</rule>
|
||
|
<rule pattern="\}">
|
||
|
<token type="Keyword"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="brace">
|
||
|
<rule pattern="\}">
|
||
|
<token type="Keyword"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="command-in-brace"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="basic"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="data"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="params">
|
||
|
<rule pattern=";">
|
||
|
<token type="Keyword"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule pattern="\n">
|
||
|
<token type="Text"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
<rule pattern="(else|elseif|then)\b">
|
||
|
<token type="Keyword"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="basic"/>
|
||
|
</rule>
|
||
|
<rule>
|
||
|
<include state="data"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
<state name="string">
|
||
|
<rule pattern="\[">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
<push state="string-square"/>
|
||
|
</rule>
|
||
|
<rule pattern="(?s)(\\\\|\\[0-7]+|\\.|[^"\\])">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
</rule>
|
||
|
<rule pattern=""">
|
||
|
<token type="LiteralStringDouble"/>
|
||
|
<pop depth="1"/>
|
||
|
</rule>
|
||
|
</state>
|
||
|
</rules>
|
||
|
</lexer>
|