...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>PSL</name>
     4    <alias>psl</alias>
     5    <filename>*.psl</filename>
     6    <filename>*.BATCH</filename>
     7    <filename>*.TRIG</filename>
     8    <filename>*.PROC</filename>
     9    <mime_type>text/x-psl</mime_type>
    10  </config>
    11  <rules>
    12  <!-- NameFunction|TypeName -->
    13    <state name="root">
    14      <rule pattern="[^\S\n]+">
    15        <token type="Text"/>
    16      </rule>
    17      <rule pattern="\\\n">
    18        <token type="Text"/>
    19      </rule>
    20      <rule pattern="\n">
    21        <token type="Text"/>
    22      </rule>
    23      <rule pattern="//.*$">
    24        <token type="CommentSingle"/>
    25      </rule>
    26      <rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
    27        <token type="CommentMultiline"/>
    28      </rule>
    29      <rule pattern="\+|-|\*|\/|\b%\b|&lt;|&gt;|=|'|\band\b|\bor\b|_|:|!">
    30        <token type="Operator"/>
    31      </rule>
    32      <rule pattern="[{}(,)\[\]]">
    33        <token type="Punctuation"/>
    34        <push state="root"/>
    35      </rule>
    36      <rule pattern="#">
    37        <token type="KeywordPseudo"/>
    38        <push state="directive"/>
    39      </rule>
    40      <rule pattern="\.?\d+">
    41        <token type="LiteralNumber"/>
    42      </rule>
    43      <rule pattern="&quot;">
    44        <token type="LiteralString"/>
    45        <push state="string"/>
    46      </rule>
    47      <rule pattern="\b(do|set|if|else|for|while|quit|catch|return|ret|while)\b">
    48        <token type="Keyword"/>
    49      </rule>
    50      <rule pattern="\b(true|false)\b">
    51        <token type="KeywordConstant"/>
    52      </rule>
    53      <rule pattern="\btype\b">
    54        <token type="KeywordDeclaration"/>
    55        <push state="typename"/>
    56      </rule>
    57      <rule pattern="\b(public|req|private|void)\b">
    58        <token type="KeywordDeclaration"/>
    59      </rule>
    60      <rule pattern="\b(Boolean|String|Number|Date)\b">
    61        <token type="KeywordType"/>
    62      </rule>
    63      <rule pattern="(\${0,2}[_a-zA-z]\w*)?(\^[_a-zA-Z]\w*)">
    64        <bygroups>
    65          <token type="NameFunction"/>
    66          <token type="NameClass"/>
    67        </bygroups>
    68      </rule>
    69      <rule pattern="([_a-zA-z]\w*)(\.[_a-zA-Z]\w*)(\()">
    70        <bygroups>
    71          <token type="Name"/>
    72          <token type="NameFunction"/>
    73          <token type="Punctuation"/>
    74        </bygroups>
    75      </rule>
    76      <rule pattern="(\${0,2}[_a-zA-z]\w*)(\.[_a-zA-Z]\w*)">
    77        <bygroups>
    78          <token type="Name"/>
    79          <token type="NameProperty"/>
    80        </bygroups>
    81      </rule>
    82      <rule pattern="\.?(%|\${0,2})[_a-zA-Z]\w*">
    83        <token type="Name"/>
    84      </rule>
    85    </state>
    86    <state name="string">
    87      <rule pattern="&quot;">
    88        <token type="LiteralString"/>
    89        <pop depth="1"/>
    90      </rule>
    91      <rule pattern="\\([\\abfnrtv&quot;\&#x27;]|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})">
    92        <token type="LiteralStringEscape"/>
    93      </rule>
    94      <rule pattern="[^\\&quot;\n]+">
    95        <token type="LiteralString"/>
    96      </rule>
    97      <rule pattern="\\\n">
    98        <token type="LiteralString"/>
    99      </rule>
   100      <rule pattern="\\">
   101        <token type="LiteralString"/>
   102      </rule>
   103    </state>
   104    <state name="typename">
   105      <rule pattern="\s+">
   106        <token type="Text"/>
   107      </rule>
   108      <rule pattern="\b(public|req|private|void)\b">
   109        <token type="KeywordDeclaration"/>
   110      </rule>
   111      <rule pattern="([_a-zA-Z]\w*)?(\s+)([_a-zA-Z]\w*)">
   112        <bygroups>
   113          <token type="NameClass"/>
   114          <token type="Text"/>
   115          <token type="Name"/>
   116        </bygroups>
   117        <pop depth="1"/>
   118      </rule>
   119      <rule>
   120        <pop depth="1"/>
   121      </rule>
   122    </state>
   123    <state name="directive">
   124      <rule pattern="ACCEPT">
   125        <token type="KeywordPseudo"/>
   126        <push state="accept-directive"/>
   127      </rule>
   128      <rule pattern="CLASSDEF">
   129        <token type="KeywordPseudo"/>
   130        <push state="classdef-directive"/>
   131      </rule>
   132      <rule pattern="IF|ELSEIF">
   133        <token type="KeywordPseudo"/>
   134        <push state="if-directive"/>
   135      </rule>
   136      <rule pattern="PACKAGE">
   137        <token type="KeywordPseudo"/>
   138        <push state="package-directive"/>
   139      </rule>
   140      <rule pattern="PROPERTYDEF">
   141        <token type="KeywordPseudo"/>
   142        <pop depth="1"/>
   143      </rule>
   144      <rule pattern="INFO|WARN">
   145        <token type="KeywordPseudo"/>
   146        <push state="warn-directive"/>
   147      </rule>
   148      <rule pattern="OPTION">
   149        <token type="KeywordPseudo"/>
   150        <push state="option-directive"/>
   151      </rule>
   152      <rule pattern="BYPASS|ELSE|END|ENDBYPASS|ENDIF|OPTIMIZE">
   153        <token type="KeywordPseudo"/>
   154        <push state="other-directive"/>
   155      </rule>
   156    </state>
   157    <state name="accept-directive">
   158      <rule pattern=".+$">
   159        <token type="CommentSingle"/>
   160      </rule>
   161    </state>
   162    <state name="other-directive">
   163      <rule pattern=".+$">
   164        <token type="CommentSingle"/>
   165      </rule>
   166    </state>
   167    <state name="classdef-directive">
   168      <rule pattern="\s+">
   169        <token type="Text"/>
   170      </rule>
   171      <rule pattern="delimiter|extends">
   172        <token type="Keyword"/>
   173      </rule>
   174      <rule pattern="public">
   175        <token type="KeywordDeclaration"/>
   176      </rule>
   177      <rule pattern="=">
   178        <token type="Operator"/>
   179      </rule>
   180      <rule pattern="[\w\d]+">
   181        <token type="NameClass"/>
   182      </rule>
   183    </state>
   184    <state name="if-directive">
   185      <rule pattern=".+$">
   186        <include state="root"/>
   187      </rule>
   188    </state>
   189    <state name="option-directive">
   190      <rule pattern="\s+">
   191        <token type="Text"/>
   192      </rule>
   193      <rule pattern="ON|OFF">
   194        <token type="KeywordConstant"/>
   195        <pop depth="1"/>
   196      </rule>
   197      <rule pattern="[\w\d]+">
   198        <token type="Name"/>
   199      </rule>
   200    </state>
   201    <state name="package-directive">
   202      <rule pattern="\s+">
   203        <token type="Text"/>
   204      </rule>
   205      <rule pattern="\w+">
   206        <token type="Name"/>
   207      </rule>
   208      <rule>
   209        <include state="root"/>
   210      </rule>
   211    </state>
   212  </rules>
   213</lexer>

View as plain text