...

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

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

     1<lexer>
     2  <config>
     3    <name>PHP</name>
     4    <alias>php</alias>
     5    <alias>php3</alias>
     6    <alias>php4</alias>
     7    <alias>php5</alias>
     8    <filename>*.php</filename>
     9    <filename>*.php[345]</filename>
    10    <filename>*.inc</filename>
    11    <mime_type>text/x-php</mime_type>
    12    <case_insensitive>true</case_insensitive>
    13    <dot_all>true</dot_all>
    14    <ensure_nl>true</ensure_nl>
    15    <priority>3</priority>
    16  </config>
    17  <rules>
    18    <state name="magicfuncs">
    19      <rule pattern="(__callStatic|__set_state|__construct|__debugInfo|__toString|__destruct|__invoke|__wakeup|__clone|__sleep|__isset|__unset|__call|__get|__set)\b">
    20        <token type="NameFunctionMagic"/>
    21      </rule>
    22    </state>
    23    <state name="magicconstants">
    24      <rule pattern="(__NAMESPACE__|__FUNCTION__|__METHOD__|__CLASS__|__TRAIT__|__LINE__|__FILE__|__DIR__)\b">
    25        <token type="NameConstant"/>
    26      </rule>
    27    </state>
    28    <state name="classname">
    29      <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*">
    30        <token type="NameClass"/>
    31        <pop depth="1"/>
    32      </rule>
    33    </state>
    34    <state name="functionname">
    35      <rule>
    36        <include state="magicfuncs"/>
    37      </rule>
    38      <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*">
    39        <token type="NameFunction"/>
    40        <pop depth="1"/>
    41      </rule>
    42      <rule>
    43        <pop depth="1"/>
    44      </rule>
    45    </state>
    46    <state name="string">
    47      <rule pattern="&#34;">
    48        <token type="LiteralStringDouble"/>
    49        <pop depth="1"/>
    50      </rule>
    51      <rule pattern="[^{$&#34;\\]+">
    52        <token type="LiteralStringDouble"/>
    53      </rule>
    54      <rule pattern="\\([nrt&#34;$\\]|[0-7]{1,3}|x[0-9a-f]{1,2})">
    55        <token type="LiteralStringEscape"/>
    56      </rule>
    57      <rule pattern="\$(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*(\[\S+?\]|-&gt;(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)?">
    58        <token type="LiteralStringInterpol"/>
    59      </rule>
    60      <rule pattern="(\{\$\{)(.*?)(\}\})">
    61        <bygroups>
    62          <token type="LiteralStringInterpol"/>
    63          <usingself state="root"/>
    64          <token type="LiteralStringInterpol"/>
    65        </bygroups>
    66      </rule>
    67      <rule pattern="(\{)(\$.*?)(\})">
    68        <bygroups>
    69          <token type="LiteralStringInterpol"/>
    70          <usingself state="root"/>
    71          <token type="LiteralStringInterpol"/>
    72        </bygroups>
    73      </rule>
    74      <rule pattern="(\$\{)(\S+)(\})">
    75        <bygroups>
    76          <token type="LiteralStringInterpol"/>
    77          <token type="NameVariable"/>
    78          <token type="LiteralStringInterpol"/>
    79        </bygroups>
    80      </rule>
    81      <rule pattern="[${\\]">
    82        <token type="LiteralStringDouble"/>
    83      </rule>
    84    </state>
    85    <state name="root">
    86      <rule pattern="\?&gt;">
    87        <token type="CommentPreproc"/>
    88        <pop depth="1"/>
    89      </rule>
    90      <rule pattern="(&lt;&lt;&lt;)([\&#39;&#34;]?)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)(\2\n.*?\n\s*)(\3)(;?)(\n)">
    91        <bygroups>
    92          <token type="LiteralString"/>
    93          <token type="LiteralString"/>
    94          <token type="LiteralStringDelimiter"/>
    95          <token type="LiteralString"/>
    96          <token type="LiteralStringDelimiter"/>
    97          <token type="Punctuation"/>
    98          <token type="Text"/>
    99        </bygroups>
   100      </rule>
   101      <rule pattern="\s+">
   102        <token type="Text"/>
   103      </rule>
   104      <rule pattern="#.*?\n">
   105        <token type="CommentSingle"/>
   106      </rule>
   107      <rule pattern="//.*?\n">
   108        <token type="CommentSingle"/>
   109      </rule>
   110      <rule pattern="/\*\*/">
   111        <token type="CommentMultiline"/>
   112      </rule>
   113      <rule pattern="/\*\*.*?\*/">
   114        <token type="LiteralStringDoc"/>
   115      </rule>
   116      <rule pattern="/\*.*?\*/">
   117        <token type="CommentMultiline"/>
   118      </rule>
   119      <rule pattern="(-&gt;|::)(\s*)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)">
   120        <bygroups>
   121          <token type="Operator"/>
   122          <token type="Text"/>
   123          <token type="NameAttribute"/>
   124        </bygroups>
   125      </rule>
   126      <rule pattern="[~!%^&amp;*+=|:.&lt;&gt;/@-]+">
   127        <token type="Operator"/>
   128      </rule>
   129      <rule pattern="\?">
   130        <token type="Operator"/>
   131      </rule>
   132      <rule pattern="[\[\]{}();,]+">
   133        <token type="Punctuation"/>
   134      </rule>
   135      <rule pattern="(class)(\s+)">
   136        <bygroups>
   137          <token type="Keyword"/>
   138          <token type="Text"/>
   139        </bygroups>
   140        <push state="classname"/>
   141      </rule>
   142      <rule pattern="(function)(\s*)(?=\()">
   143        <bygroups>
   144          <token type="Keyword"/>
   145          <token type="Text"/>
   146        </bygroups>
   147      </rule>
   148      <rule pattern="(function)(\s+)(&amp;?)(\s*)">
   149        <bygroups>
   150          <token type="Keyword"/>
   151          <token type="Text"/>
   152          <token type="Operator"/>
   153          <token type="Text"/>
   154        </bygroups>
   155        <push state="functionname"/>
   156      </rule>
   157      <rule pattern="(const)(\s+)((?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*)">
   158        <bygroups>
   159          <token type="Keyword"/>
   160          <token type="Text"/>
   161          <token type="NameConstant"/>
   162        </bygroups>
   163      </rule>
   164      <rule pattern="(and|E_PARSE|old_function|E_ERROR|or|as|E_WARNING|parent|eval|PHP_OS|break|exit|case|extends|PHP_VERSION|cfunction|FALSE|print|for|require|continue|foreach|require_once|declare|return|default|static|do|switch|die|stdClass|echo|else|TRUE|elseif|var|empty|if|xor|enddeclare|include|virtual|endfor|include_once|while|endforeach|global|endif|list|endswitch|new|endwhile|not|array|E_ALL|NULL|final|php_user_filter|interface|implements|public|private|protected|abstract|clone|try|catch|throw|this|use|namespace|trait|yield|finally)\b">
   165        <token type="Keyword"/>
   166      </rule>
   167      <rule pattern="(true|false|null)\b">
   168        <token type="KeywordConstant"/>
   169      </rule>
   170      <rule>
   171        <include state="magicconstants"/>
   172      </rule>
   173      <rule pattern="\$\{\$+(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*\}">
   174        <token type="NameVariable"/>
   175      </rule>
   176      <rule pattern="\$+(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*">
   177        <token type="NameVariable"/>
   178      </rule>
   179      <rule pattern="(?:[\\_a-z]|[^\x00-\x7f])(?:[\\\w]|[^\x00-\x7f])*">
   180        <token type="NameOther"/>
   181      </rule>
   182      <rule pattern="(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?">
   183        <token type="LiteralNumberFloat"/>
   184      </rule>
   185      <rule pattern="\d+e[+-]?[0-9]+">
   186        <token type="LiteralNumberFloat"/>
   187      </rule>
   188      <rule pattern="0[0-7]+">
   189        <token type="LiteralNumberOct"/>
   190      </rule>
   191      <rule pattern="0x[a-f0-9_]+">
   192        <token type="LiteralNumberHex"/>
   193      </rule>
   194      <rule pattern="\d[\d_]*">
   195        <token type="LiteralNumberInteger"/>
   196      </rule>
   197      <rule pattern="0b[01]+">
   198        <token type="LiteralNumberBin"/>
   199      </rule>
   200      <rule pattern="&#39;([^&#39;\\]*(?:\\.[^&#39;\\]*)*)&#39;">
   201        <token type="LiteralStringSingle"/>
   202      </rule>
   203      <rule pattern="`([^`\\]*(?:\\.[^`\\]*)*)`">
   204        <token type="LiteralStringBacktick"/>
   205      </rule>
   206      <rule pattern="&#34;">
   207        <token type="LiteralStringDouble"/>
   208        <push state="string"/>
   209      </rule>
   210    </state>
   211  </rules>
   212</lexer>

View as plain text