...

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

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

     1<lexer>
     2  <config>
     3    <name>TypeScript</name>
     4    <alias>ts</alias>
     5    <alias>tsx</alias>
     6    <alias>typescript</alias>
     7    <filename>*.ts</filename>
     8    <filename>*.tsx</filename>
     9    <filename>*.mts</filename>
    10    <filename>*.cts</filename>
    11    <mime_type>text/x-typescript</mime_type>
    12    <dot_all>true</dot_all>
    13    <ensure_nl>true</ensure_nl>
    14  </config>
    15  <rules>
    16    <state name="expression">
    17      <rule pattern="{">
    18        <token type="Punctuation"/>
    19        <push/>
    20      </rule>
    21      <rule pattern="}">
    22        <token type="Punctuation"/>
    23        <pop depth="1"/>
    24      </rule>
    25      <rule>
    26        <include state="root"/>
    27      </rule>
    28    </state>
    29    <state name="jsx">
    30      <rule pattern="(&lt;)(/?)(&gt;)">
    31        <bygroups>
    32          <token type="Punctuation"/>
    33          <token type="Punctuation"/>
    34          <token type="Punctuation"/>
    35        </bygroups>
    36      </rule>
    37      <rule pattern="(&lt;)([\w\.]+)">
    38        <bygroups>
    39          <token type="Punctuation"/>
    40          <token type="NameTag"/>
    41        </bygroups>
    42        <push state="tag"/>
    43      </rule>
    44      <rule pattern="(&lt;)(/)([\w\.]*)(&gt;)">
    45        <bygroups>
    46          <token type="Punctuation"/>
    47          <token type="Punctuation"/>
    48          <token type="NameTag"/>
    49          <token type="Punctuation"/>
    50        </bygroups>
    51      </rule>
    52    </state>
    53    <state name="tag">
    54      <rule pattern="\s+">
    55        <token type="Text"/>
    56      </rule>
    57      <rule pattern="([\w]+\s*)(=)(\s*)">
    58        <bygroups>
    59          <token type="NameAttribute"/>
    60          <token type="Operator"/>
    61          <token type="Text"/>
    62        </bygroups>
    63        <push state="attr"/>
    64      </rule>
    65      <rule pattern="[{}]+">
    66        <token type="Punctuation"/>
    67      </rule>
    68      <rule pattern="[\w\.]+">
    69        <token type="NameAttribute"/>
    70      </rule>
    71      <rule pattern="(/?)(\s*)(&gt;)">
    72        <bygroups>
    73          <token type="Punctuation"/>
    74          <token type="Text"/>
    75          <token type="Punctuation"/>
    76        </bygroups>
    77        <pop depth="1"/>
    78      </rule>
    79    </state>
    80    <state name="commentsandwhitespace">
    81      <rule pattern="\s+">
    82        <token type="Text"/>
    83      </rule>
    84      <rule pattern="&lt;!--">
    85        <token type="Comment"/>
    86      </rule>
    87      <rule pattern="//.*?\n">
    88        <token type="CommentSingle"/>
    89      </rule>
    90      <rule pattern="/\*.*?\*/">
    91        <token type="CommentMultiline"/>
    92      </rule>
    93    </state>
    94    <state name="badregex">
    95      <rule pattern="\n">
    96        <token type="Text"/>
    97        <pop depth="1"/>
    98      </rule>
    99    </state>
   100    <state name="interp">
   101      <rule pattern="`">
   102        <token type="LiteralStringBacktick"/>
   103        <pop depth="1"/>
   104      </rule>
   105      <rule pattern="\\\\">
   106        <token type="LiteralStringBacktick"/>
   107      </rule>
   108      <rule pattern="\\`">
   109        <token type="LiteralStringBacktick"/>
   110      </rule>
   111      <rule pattern="\$\{">
   112        <token type="LiteralStringInterpol"/>
   113        <push state="interp-inside"/>
   114      </rule>
   115      <rule pattern="\$">
   116        <token type="LiteralStringBacktick"/>
   117      </rule>
   118      <rule pattern="[^`\\$]+">
   119        <token type="LiteralStringBacktick"/>
   120      </rule>
   121    </state>
   122    <state name="attr">
   123      <rule pattern="{">
   124        <token type="Punctuation"/>
   125        <push state="expression"/>
   126      </rule>
   127      <rule pattern="&#34;.*?&#34;">
   128        <token type="LiteralString"/>
   129        <pop depth="1"/>
   130      </rule>
   131      <rule pattern="&#39;.*?&#39;">
   132        <token type="LiteralString"/>
   133        <pop depth="1"/>
   134      </rule>
   135      <rule>
   136        <pop depth="1"/>
   137      </rule>
   138    </state>
   139    <state name="interp-inside">
   140      <rule pattern="\}">
   141        <token type="LiteralStringInterpol"/>
   142        <pop depth="1"/>
   143      </rule>
   144      <rule>
   145        <include state="root"/>
   146      </rule>
   147    </state>
   148    <state name="slashstartsregex">
   149      <rule>
   150        <include state="commentsandwhitespace"/>
   151      </rule>
   152      <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)">
   153        <token type="LiteralStringRegex"/>
   154        <pop depth="1"/>
   155      </rule>
   156      <rule pattern="(?=/)">
   157        <token type="Text"/>
   158        <push state="#pop" state="badregex"/>
   159      </rule>
   160      <rule>
   161        <pop depth="1"/>
   162      </rule>
   163    </state>
   164    <state name="root">
   165      <rule>
   166        <include state="jsx"/>
   167      </rule>
   168      <rule pattern="^(?=\s|/|&lt;!--)">
   169        <token type="Text"/>
   170        <push state="slashstartsregex"/>
   171      </rule>
   172      <rule>
   173        <include state="commentsandwhitespace"/>
   174      </rule>
   175      <rule pattern="\+\+|--|~|&amp;&amp;|\?|:|\|\||\\(?=\n)|(&lt;&lt;|&gt;&gt;&gt;?|==?|!=?|[-&lt;&gt;+*%&amp;|^/])=?">
   176        <token type="Operator"/>
   177        <push state="slashstartsregex"/>
   178      </rule>
   179      <rule pattern="[{(\[;,]">
   180        <token type="Punctuation"/>
   181        <push state="slashstartsregex"/>
   182      </rule>
   183      <rule pattern="[})\].]">
   184        <token type="Punctuation"/>
   185      </rule>
   186      <rule pattern="(for|in|of|while|do|break|return|yield|continue|switch|case|default|if|else|throw|try|catch|finally|new|delete|typeof|instanceof|keyof|asserts|is|infer|await|void|this)\b">
   187        <token type="Keyword"/>
   188        <push state="slashstartsregex"/>
   189      </rule>
   190      <rule pattern="(var|let|with|function)\b">
   191        <token type="KeywordDeclaration"/>
   192        <push state="slashstartsregex"/>
   193      </rule>
   194      <rule pattern="(abstract|async|boolean|class|const|debugger|enum|export|extends|from|get|global|goto|implements|import|interface|namespace|package|private|protected|public|readonly|require|set|static|super|type)\b">
   195        <token type="KeywordReserved"/>
   196      </rule>
   197      <rule pattern="(true|false|null|NaN|Infinity|undefined)\b">
   198        <token type="KeywordConstant"/>
   199      </rule>
   200      <rule pattern="(Array|Boolean|Date|Error|Function|Math|Number|Object|Packages|RegExp|String|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|document|this|window)\b">
   201        <token type="NameBuiltin"/>
   202      </rule>
   203      <rule pattern="\b(module)(\s*)(\s*[\w?.$][\w?.$]*)(\s*)">
   204        <bygroups>
   205          <token type="KeywordReserved"/>
   206          <token type="Text"/>
   207          <token type="NameOther"/>
   208          <token type="Text"/>
   209        </bygroups>
   210        <push state="slashstartsregex"/>
   211      </rule>
   212      <rule pattern="\b(string|bool|number|any|never|object|symbol|unique|unknown|bigint)\b">
   213        <token type="KeywordType"/>
   214      </rule>
   215      <rule pattern="\b(constructor|declare|interface|as)\b">
   216        <token type="KeywordReserved"/>
   217      </rule>
   218      <rule pattern="(super)(\s*)(\([\w,?.$\s]+\s*\))">
   219        <bygroups>
   220          <token type="KeywordReserved"/>
   221          <token type="Text"/>
   222        </bygroups>
   223        <push state="slashstartsregex"/>
   224      </rule>
   225      <rule pattern="([a-zA-Z_?.$][\w?.$]*)\(\) \{">
   226        <token type="NameOther"/>
   227        <push state="slashstartsregex"/>
   228      </rule>
   229      <rule pattern="([\w?.$][\w?.$]*)(\s*:\s*)([\w?.$][\w?.$]*)">
   230        <bygroups>
   231          <token type="NameOther"/>
   232          <token type="Text"/>
   233          <token type="KeywordType"/>
   234        </bygroups>
   235      </rule>
   236      <rule pattern="[$a-zA-Z_]\w*">
   237        <token type="NameOther"/>
   238      </rule>
   239      <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
   240        <token type="LiteralNumberFloat"/>
   241      </rule>
   242      <rule pattern="0x[0-9a-fA-F]+">
   243        <token type="LiteralNumberHex"/>
   244      </rule>
   245      <rule pattern="[0-9]+">
   246        <token type="LiteralNumberInteger"/>
   247      </rule>
   248      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
   249        <token type="LiteralStringDouble"/>
   250      </rule>
   251      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
   252        <token type="LiteralStringSingle"/>
   253      </rule>
   254      <rule pattern="`">
   255        <token type="LiteralStringBacktick"/>
   256        <push state="interp"/>
   257      </rule>
   258      <rule pattern="@\w+">
   259        <token type="KeywordDeclaration"/>
   260      </rule>
   261    </state>
   262  </rules>
   263</lexer>

View as plain text