1<lexer>
2 <config>
3 <name>Smarty</name>
4 <alias>smarty</alias>
5 <filename>*.tpl</filename>
6 <mime_type>application/x-smarty</mime_type>
7 <dot_all>true</dot_all>
8 </config>
9 <rules>
10 <state name="root">
11 <rule pattern="[^{]+">
12 <token type="Other"/>
13 </rule>
14 <rule pattern="(\{)(\*.*?\*)(\})">
15 <bygroups>
16 <token type="CommentPreproc"/>
17 <token type="Comment"/>
18 <token type="CommentPreproc"/>
19 </bygroups>
20 </rule>
21 <rule pattern="(\{php\})(.*?)(\{/php\})">
22 <bygroups>
23 <token type="CommentPreproc"/>
24 <using lexer="PHP"/>
25 <token type="CommentPreproc"/>
26 </bygroups>
27 </rule>
28 <rule pattern="(\{)(/?[a-zA-Z_]\w*)(\s*)">
29 <bygroups>
30 <token type="CommentPreproc"/>
31 <token type="NameFunction"/>
32 <token type="Text"/>
33 </bygroups>
34 <push state="smarty"/>
35 </rule>
36 <rule pattern="\{">
37 <token type="CommentPreproc"/>
38 <push state="smarty"/>
39 </rule>
40 </state>
41 <state name="smarty">
42 <rule pattern="\s+">
43 <token type="Text"/>
44 </rule>
45 <rule pattern="\{">
46 <token type="CommentPreproc"/>
47 <push/>
48 </rule>
49 <rule pattern="\}">
50 <token type="CommentPreproc"/>
51 <pop depth="1"/>
52 </rule>
53 <rule pattern="#[a-zA-Z_]\w*#">
54 <token type="NameVariable"/>
55 </rule>
56 <rule pattern="\$[a-zA-Z_]\w*(\.\w+)*">
57 <token type="NameVariable"/>
58 </rule>
59 <rule pattern="[~!%^&*()+=|\[\]:;,.<>/?@-]">
60 <token type="Operator"/>
61 </rule>
62 <rule pattern="(true|false|null)\b">
63 <token type="KeywordConstant"/>
64 </rule>
65 <rule pattern="[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?">
66 <token type="LiteralNumber"/>
67 </rule>
68 <rule pattern=""(\\\\|\\"|[^"])*"">
69 <token type="LiteralStringDouble"/>
70 </rule>
71 <rule pattern="'(\\\\|\\'|[^'])*'">
72 <token type="LiteralStringSingle"/>
73 </rule>
74 <rule pattern="[a-zA-Z_]\w*">
75 <token type="NameAttribute"/>
76 </rule>
77 </state>
78 </rules>
79</lexer>