...

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

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

     1<lexer>
     2  <config>
     3    <name>JavaScript</name>
     4    <alias>js</alias>
     5    <alias>javascript</alias>
     6    <filename>*.js</filename>
     7    <filename>*.jsm</filename>
     8    <filename>*.mjs</filename>
     9    <filename>*.cjs</filename>
    10    <mime_type>application/javascript</mime_type>
    11    <mime_type>application/x-javascript</mime_type>
    12    <mime_type>text/x-javascript</mime_type>
    13    <mime_type>text/javascript</mime_type>
    14    <dot_all>true</dot_all>
    15    <ensure_nl>true</ensure_nl>
    16  </config>
    17  <rules>
    18    <state name="interp">
    19      <rule pattern="`">
    20        <token type="LiteralStringBacktick"/>
    21        <pop depth="1"/>
    22      </rule>
    23      <rule pattern="\\\\">
    24        <token type="LiteralStringBacktick"/>
    25      </rule>
    26      <rule pattern="\\`">
    27        <token type="LiteralStringBacktick"/>
    28      </rule>
    29      <rule pattern="\\[^`\\]">
    30        <token type="LiteralStringBacktick"/>
    31      </rule>
    32      <rule pattern="\$\{">
    33        <token type="LiteralStringInterpol"/>
    34        <push state="interp-inside"/>
    35      </rule>
    36      <rule pattern="\$">
    37        <token type="LiteralStringBacktick"/>
    38      </rule>
    39      <rule pattern="[^`\\$]+">
    40        <token type="LiteralStringBacktick"/>
    41      </rule>
    42    </state>
    43    <state name="interp-inside">
    44      <rule pattern="\}">
    45        <token type="LiteralStringInterpol"/>
    46        <pop depth="1"/>
    47      </rule>
    48      <rule>
    49        <include state="root"/>
    50      </rule>
    51    </state>
    52    <state name="commentsandwhitespace">
    53      <rule pattern="\s+">
    54        <token type="Text"/>
    55      </rule>
    56      <rule pattern="&lt;!--">
    57        <token type="Comment"/>
    58      </rule>
    59      <rule pattern="//.*?\n">
    60        <token type="CommentSingle"/>
    61      </rule>
    62      <rule pattern="/\*.*?\*/">
    63        <token type="CommentMultiline"/>
    64      </rule>
    65    </state>
    66    <state name="slashstartsregex">
    67      <rule>
    68        <include state="commentsandwhitespace"/>
    69      </rule>
    70      <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gimuy]+\b|\B)">
    71        <token type="LiteralStringRegex"/>
    72        <pop depth="1"/>
    73      </rule>
    74      <rule pattern="(?=/)">
    75        <token type="Text"/>
    76        <push state="#pop" state="badregex"/>
    77      </rule>
    78      <rule>
    79        <pop depth="1"/>
    80      </rule>
    81    </state>
    82    <state name="badregex">
    83      <rule pattern="\n">
    84        <token type="Text"/>
    85        <pop depth="1"/>
    86      </rule>
    87    </state>
    88    <state name="root">
    89      <rule pattern="\A#! ?/.*?\n">
    90        <token type="CommentHashbang"/>
    91      </rule>
    92      <rule pattern="^(?=\s|/|&lt;!--)">
    93        <token type="Text"/>
    94        <push state="slashstartsregex"/>
    95      </rule>
    96      <rule>
    97        <include state="commentsandwhitespace"/>
    98      </rule>
    99      <rule pattern="\d+(\.\d*|[eE][+\-]?\d+)">
   100        <token type="LiteralNumberFloat"/>
   101      </rule>
   102      <rule pattern="0[bB][01]+">
   103        <token type="LiteralNumberBin"/>
   104      </rule>
   105      <rule pattern="0[oO][0-7]+">
   106        <token type="LiteralNumberOct"/>
   107      </rule>
   108      <rule pattern="0[xX][0-9a-fA-F]+">
   109        <token type="LiteralNumberHex"/>
   110      </rule>
   111      <rule pattern="[0-9][0-9_]*">
   112        <token type="LiteralNumberInteger"/>
   113      </rule>
   114      <rule pattern="\.\.\.|=&gt;">
   115        <token type="Punctuation"/>
   116      </rule>
   117      <rule pattern="\+\+|--|~|&amp;&amp;|\?|:|\|\||\\(?=\n)|(&lt;&lt;|&gt;&gt;&gt;?|==?|!=?|[-&lt;&gt;+*%&amp;|^/])=?">
   118        <token type="Operator"/>
   119        <push state="slashstartsregex"/>
   120      </rule>
   121      <rule pattern="[{(\[;,]">
   122        <token type="Punctuation"/>
   123        <push state="slashstartsregex"/>
   124      </rule>
   125      <rule pattern="[})\].]">
   126        <token type="Punctuation"/>
   127      </rule>
   128      <rule pattern="(for|in|while|do|break|return|continue|switch|case|default|if|else|throw|try|catch|finally|new|delete|typeof|instanceof|void|yield|this|of)\b">
   129        <token type="Keyword"/>
   130        <push state="slashstartsregex"/>
   131      </rule>
   132      <rule pattern="(var|let|with|function)\b">
   133        <token type="KeywordDeclaration"/>
   134        <push state="slashstartsregex"/>
   135      </rule>
   136      <rule pattern="(abstract|async|await|boolean|byte|char|class|const|debugger|double|enum|export|extends|final|float|goto|implements|import|int|interface|long|native|package|private|protected|public|short|static|super|synchronized|throws|transient|volatile)\b">
   137        <token type="KeywordReserved"/>
   138      </rule>
   139      <rule pattern="(true|false|null|NaN|Infinity|undefined)\b">
   140        <token type="KeywordConstant"/>
   141      </rule>
   142      <rule pattern="(Array|Boolean|Date|Error|Function|Math|netscape|Number|Object|Packages|RegExp|String|Promise|Proxy|sun|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|Error|eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|document|this|window)\b">
   143        <token type="NameBuiltin"/>
   144      </rule>
   145      <rule pattern="(?:[$_\p{L}\p{N}]|\\u[a-fA-F0-9]{4})(?:(?:[$\p{L}\p{N}]|\\u[a-fA-F0-9]{4}))*">
   146        <token type="NameOther"/>
   147      </rule>
   148      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
   149        <token type="LiteralStringDouble"/>
   150      </rule>
   151      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
   152        <token type="LiteralStringSingle"/>
   153      </rule>
   154      <rule pattern="`">
   155        <token type="LiteralStringBacktick"/>
   156        <push state="interp"/>
   157      </rule>
   158    </state>
   159  </rules>
   160</lexer>

View as plain text