...
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=""">
48 <token type="LiteralStringDouble"/>
49 <pop depth="1"/>
50 </rule>
51 <rule pattern="[^{$"\\]+">
52 <token type="LiteralStringDouble"/>
53 </rule>
54 <rule pattern="\\([nrt"$\\]|[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+?\]|->(?:[\\_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="\?>">
87 <token type="CommentPreproc"/>
88 <pop depth="1"/>
89 </rule>
90 <rule pattern="(<<<)([\'"]?)((?:[\\_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="(->|::)(\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="[~!%^&*+=|:.<>/@-]+">
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+)(&?)(\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="'([^'\\]*(?:\\.[^'\\]*)*)'">
201 <token type="LiteralStringSingle"/>
202 </rule>
203 <rule pattern="`([^`\\]*(?:\\.[^`\\]*)*)`">
204 <token type="LiteralStringBacktick"/>
205 </rule>
206 <rule pattern=""">
207 <token type="LiteralStringDouble"/>
208 <push state="string"/>
209 </rule>
210 </state>
211 </rules>
212</lexer>
View as plain text