1<lexer>
2 <config>
3 <name>TypoScript</name>
4 <alias>typoscript</alias>
5 <filename>*.ts</filename>
6 <mime_type>text/x-typoscript</mime_type>
7 <dot_all>true</dot_all>
8 <priority>0.1</priority>
9 </config>
10 <rules>
11 <state name="whitespace">
12 <rule pattern="\s+">
13 <token type="Text"/>
14 </rule>
15 </state>
16 <state name="html">
17 <rule pattern="<\S[^\n>]*>">
18 <using lexer="TypoScriptHTMLData"/>
19 </rule>
20 <rule pattern="&[^;\n]*;">
21 <token type="LiteralString"/>
22 </rule>
23 <rule pattern="(_CSS_DEFAULT_STYLE)(\s*)(\()(?s)(.*(?=\n\)))">
24 <bygroups>
25 <token type="NameClass"/>
26 <token type="Text"/>
27 <token type="LiteralStringSymbol"/>
28 <using lexer="TypoScriptCSSData"/>
29 </bygroups>
30 </rule>
31 </state>
32 <state name="operator">
33 <rule pattern="[<>,:=.*%+|]">
34 <token type="Operator"/>
35 </rule>
36 </state>
37 <state name="structure">
38 <rule pattern="[{}()\[\]\\]">
39 <token type="LiteralStringSymbol"/>
40 </rule>
41 </state>
42 <state name="constant">
43 <rule pattern="(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})">
44 <bygroups>
45 <token type="LiteralStringSymbol"/>
46 <token type="Operator"/>
47 <token type="NameConstant"/>
48 <token type="NameConstant"/>
49 <token type="LiteralStringSymbol"/>
50 </bygroups>
51 </rule>
52 <rule pattern="(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})">
53 <bygroups>
54 <token type="LiteralStringSymbol"/>
55 <token type="NameConstant"/>
56 <token type="Operator"/>
57 <token type="NameConstant"/>
58 <token type="LiteralStringSymbol"/>
59 </bygroups>
60 </rule>
61 <rule pattern="(#[a-fA-F0-9]{6}\b|#[a-fA-F0-9]{3}\b)">
62 <token type="LiteralStringChar"/>
63 </rule>
64 </state>
65 <state name="comment">
66 <rule pattern="(?<!(#|\'|"))(?:#(?!(?:[a-fA-F0-9]{6}|[a-fA-F0-9]{3}))[^\n#]+|//[^\n]*)">
67 <token type="Comment"/>
68 </rule>
69 <rule pattern="/\*(?:(?!\*/).)*\*/">
70 <token type="Comment"/>
71 </rule>
72 <rule pattern="(\s*#\s*\n)">
73 <token type="Comment"/>
74 </rule>
75 </state>
76 <state name="root">
77 <rule>
78 <include state="comment"/>
79 </rule>
80 <rule>
81 <include state="constant"/>
82 </rule>
83 <rule>
84 <include state="html"/>
85 </rule>
86 <rule>
87 <include state="label"/>
88 </rule>
89 <rule>
90 <include state="whitespace"/>
91 </rule>
92 <rule>
93 <include state="keywords"/>
94 </rule>
95 <rule>
96 <include state="punctuation"/>
97 </rule>
98 <rule>
99 <include state="operator"/>
100 </rule>
101 <rule>
102 <include state="structure"/>
103 </rule>
104 <rule>
105 <include state="literal"/>
106 </rule>
107 <rule>
108 <include state="other"/>
109 </rule>
110 </state>
111 <state name="literal">
112 <rule pattern="0x[0-9A-Fa-f]+t?">
113 <token type="LiteralNumberHex"/>
114 </rule>
115 <rule pattern="[0-9]+">
116 <token type="LiteralNumberInteger"/>
117 </rule>
118 <rule pattern="(###\w+###)">
119 <token type="NameConstant"/>
120 </rule>
121 </state>
122 <state name="label">
123 <rule pattern="(EXT|FILE|LLL):[^}\n"]*">
124 <token type="LiteralString"/>
125 </rule>
126 <rule pattern="(?![^\w\-])([\w\-]+(?:/[\w\-]+)+/?)(\S*\n)">
127 <bygroups>
128 <token type="LiteralString"/>
129 <token type="LiteralString"/>
130 </bygroups>
131 </rule>
132 </state>
133 <state name="punctuation">
134 <rule pattern="[,.]">
135 <token type="Punctuation"/>
136 </rule>
137 </state>
138 <state name="other">
139 <rule pattern="[\w"\-!/&;]+">
140 <token type="Text"/>
141 </rule>
142 </state>
143 <state name="keywords">
144 <rule pattern="(\[)(?i)(browser|compatVersion|dayofmonth|dayofweek|dayofyear|device|ELSE|END|GLOBAL|globalString|globalVar|hostname|hour|IP|language|loginUser|loginuser|minute|month|page|PIDinRootline|PIDupinRootline|system|treeLevel|useragent|userFunc|usergroup|version)([^\]]*)(\])">
145 <bygroups>
146 <token type="LiteralStringSymbol"/>
147 <token type="NameConstant"/>
148 <token type="Text"/>
149 <token type="LiteralStringSymbol"/>
150 </bygroups>
151 </rule>
152 <rule pattern="(?=[\w\-])(HTMLparser|HTMLparser_tags|addParams|cache|encapsLines|filelink|if|imageLinkWrap|imgResource|makelinks|numRows|numberFormat|parseFunc|replacement|round|select|split|stdWrap|strPad|tableStyle|tags|textStyle|typolink)(?![\w\-])">
153 <token type="NameFunction"/>
154 </rule>
155 <rule pattern="(?:(=?\s*<?\s+|^\s*))(cObj|field|config|content|constants|FEData|file|frameset|includeLibs|lib|page|plugin|register|resources|sitemap|sitetitle|styles|temp|tt_[^:.\s]*|types|xmlnews|INCLUDE_TYPOSCRIPT|_CSS_DEFAULT_STYLE|_DEFAULT_PI_VARS|_LOCAL_LANG)(?![\w\-])">
156 <bygroups>
157 <token type="Operator"/>
158 <token type="NameBuiltin"/>
159 </bygroups>
160 </rule>
161 <rule pattern="(?=[\w\-])(CASE|CLEARGIF|COA|COA_INT|COBJ_ARRAY|COLUMNS|CONTENT|CTABLE|EDITPANEL|FILE|FILES|FLUIDTEMPLATE|FORM|HMENU|HRULER|HTML|IMAGE|IMGTEXT|IMG_RESOURCE|LOAD_REGISTER|MEDIA|MULTIMEDIA|OTABLE|PAGE|QTOBJECT|RECORDS|RESTORE_REGISTER|SEARCHRESULT|SVG|SWFOBJECT|TEMPLATE|TEXT|USER|USER_INT)(?![\w\-])">
162 <token type="NameClass"/>
163 </rule>
164 <rule pattern="(?=[\w\-])(ACTIFSUBRO|ACTIFSUB|ACTRO|ACT|CURIFSUBRO|CURIFSUB|CURRO|CUR|IFSUBRO|IFSUB|NO|SPC|USERDEF1RO|USERDEF1|USERDEF2RO|USERDEF2|USRRO|USR)">
165 <token type="NameClass"/>
166 </rule>
167 <rule pattern="(?=[\w\-])(GMENU_FOLDOUT|GMENU_LAYERS|GMENU|IMGMENUITEM|IMGMENU|JSMENUITEM|JSMENU|TMENUITEM|TMENU_LAYERS|TMENU)">
168 <token type="NameClass"/>
169 </rule>
170 <rule pattern="(?=[\w\-])(PHP_SCRIPT(_EXT|_INT)?)">
171 <token type="NameClass"/>
172 </rule>
173 <rule pattern="(?=[\w\-])(userFunc)(?![\w\-])">
174 <token type="NameFunction"/>
175 </rule>
176 </state>
177 </rules>
178</lexer>