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="&lt;\S[^\n&gt;]*&gt;">
    
  18.         <using lexer="TypoScriptHTMLData"/>
    
  19.       </rule>
    
  20.       <rule pattern="&amp;[^;\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="[&lt;&gt;,:=.*%+|]">
    
  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="(?&lt;!(#|\&#39;|&#34;))(?:#(?!(?:[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&#34;]*">
    
  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&#34;\-!/&amp;;]+">
    
  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*&lt;?\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>