126 lines
No EOL
3.5 KiB
XML
126 lines
No EOL
3.5 KiB
XML
<lexer>
|
|
<config>
|
|
<name>PSL</name>
|
|
<alias>psl</alias>
|
|
<filename>*.psl</filename>
|
|
<filename>*.BATCH</filename>
|
|
<filename>*.TRIG</filename>
|
|
<filename>*.PROC</filename>
|
|
<mime_type>text/x-psl</mime_type>
|
|
</config>
|
|
<rules>
|
|
<!-- NameFunction|TypeName -->
|
|
<state name="root">
|
|
<rule pattern="//.*$">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
<rule pattern="\+|-|\*|/|%|'?<|'?>|'?=|\band\b|\bor\b|_|:">
|
|
<token type="Operator"/>
|
|
</rule>
|
|
<rule pattern="[{}(),\[\]]">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
<rule pattern="[+-]?\d*\.\d+">
|
|
<token type="LiteralNumber"/>
|
|
</rule>
|
|
<rule pattern=""">
|
|
<token type="LiteralString"/>
|
|
<push state="string"/>
|
|
</rule>
|
|
<rule pattern="\.">
|
|
<token type="Operator"/>
|
|
<push state="method"/>
|
|
</rule>
|
|
<rule pattern="\$\$">
|
|
<token type="NameFunction"/>
|
|
<push state="method"/>
|
|
</rule>
|
|
<rule pattern="\bdo\b">
|
|
<token type="KeywordReserved"/>
|
|
<push state="callmethod"/>
|
|
</rule>
|
|
<rule pattern="\b(do|set|if|for|while|quit|catch|return|while)\b">
|
|
<token type="Keyword"/>
|
|
</rule>
|
|
<rule pattern="\b(true|false)\b">
|
|
<token type="KeywordConstant"/>
|
|
</rule>
|
|
<rule pattern="\btype\b">
|
|
<token type="KeywordDeclaration"/>
|
|
<push state="typename"/>
|
|
</rule>
|
|
<rule pattern="\b(public|req|private|void)\b">
|
|
<token type="KeywordDeclaration"/>
|
|
</rule>
|
|
<rule pattern="\b(Boolean|String|Number|Date)\b">
|
|
<token type="KeywordType"/>
|
|
</rule>
|
|
<rule pattern="\^?[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="Name"/>
|
|
</rule>
|
|
<rule pattern="\s+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
</state>
|
|
<state name="string">
|
|
<rule pattern=""">
|
|
<token type="LiteralString"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})">
|
|
<token type="LiteralStringEscape"/>
|
|
</rule>
|
|
<rule pattern="[^\\"\n]+">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="\\\n">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
<rule pattern="\\">
|
|
<token type="LiteralString"/>
|
|
</rule>
|
|
</state>
|
|
<state name="method">
|
|
<rule pattern="\(">
|
|
<token type="Punctuation"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="\^[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="NameClass"/>
|
|
</rule>
|
|
<rule pattern="[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="NameFunction"/>
|
|
</rule>
|
|
</state>
|
|
<state name="callmethod">
|
|
<rule pattern="\(|{">
|
|
<token type="Punctuation"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="\^[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="NameClass"/>
|
|
</rule>
|
|
<rule pattern="[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="NameFunction"/>
|
|
</rule>
|
|
<rule pattern="\s+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
</state>
|
|
<state name="typename">
|
|
<rule pattern="\s+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="\b(public|req|private|void)\b">
|
|
<token type="KeywordDeclaration"/>
|
|
</rule>
|
|
<rule pattern="[a-zA-Z][a-zA-Z0-9]*">
|
|
<token type="NameClass"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
</rules>
|
|
</lexer> |