1<lexer>
2 <config>
3 <name>Go Template</name>
4 <alias>go-template</alias>
5 <filename>*.gotmpl</filename>
6 <filename>*.go.tmpl</filename>
7 </config>
8 <rules>
9 <state name="template">
10 <rule pattern="[-]?}}">
11 <token type="CommentPreproc"/>
12 <pop depth="1"/>
13 </rule>
14 <rule pattern="(?=}})">
15 <token type="CommentPreproc"/>
16 <pop depth="1"/>
17 </rule>
18 <rule pattern="\(">
19 <token type="Operator"/>
20 <push state="subexpression"/>
21 </rule>
22 <rule pattern=""(\\\\|\\"|[^"])*"">
23 <token type="LiteralString"/>
24 </rule>
25 <rule>
26 <include state="expression"/>
27 </rule>
28 </state>
29 <state name="subexpression">
30 <rule pattern="\)">
31 <token type="Operator"/>
32 <pop depth="1"/>
33 </rule>
34 <rule>
35 <include state="expression"/>
36 </rule>
37 </state>
38 <state name="expression">
39 <rule pattern="\s+">
40 <token type="TextWhitespace"/>
41 </rule>
42 <rule pattern="\(">
43 <token type="Operator"/>
44 <push state="subexpression"/>
45 </rule>
46 <rule pattern="(range|if|else|while|with|template|end|true|false|nil|and|call|html|index|js|len|not|or|print|printf|println|urlquery|eq|ne|lt|le|gt|ge|block|break|continue|define|slice)\b">
47 <token type="Keyword"/>
48 </rule>
49 <rule pattern="\||:?=|,">
50 <token type="Operator"/>
51 </rule>
52 <rule pattern="[$]?[^\W\d]\w*">
53 <token type="NameOther"/>
54 </rule>
55 <rule pattern="\$|[$]?\.(?:[^\W\d]\w*)?">
56 <token type="NameAttribute"/>
57 </rule>
58 <rule pattern=""(\\\\|\\"|[^"])*"">
59 <token type="LiteralString"/>
60 </rule>
61 <rule pattern="-?\d+i">
62 <token type="LiteralNumber"/>
63 </rule>
64 <rule pattern="-?\d+\.\d*([Ee][-+]\d+)?i">
65 <token type="LiteralNumber"/>
66 </rule>
67 <rule pattern="\.\d+([Ee][-+]\d+)?i">
68 <token type="LiteralNumber"/>
69 </rule>
70 <rule pattern="-?\d+[Ee][-+]\d+i">
71 <token type="LiteralNumber"/>
72 </rule>
73 <rule pattern="-?\d+(\.\d+[eE][+\-]?\d+|\.\d*|[eE][+\-]?\d+)">
74 <token type="LiteralNumberFloat"/>
75 </rule>
76 <rule pattern="-?\.\d+([eE][+\-]?\d+)?">
77 <token type="LiteralNumberFloat"/>
78 </rule>
79 <rule pattern="-?0[0-7]+">
80 <token type="LiteralNumberOct"/>
81 </rule>
82 <rule pattern="-?0[xX][0-9a-fA-F]+">
83 <token type="LiteralNumberHex"/>
84 </rule>
85 <rule pattern="-?0b[01_]+">
86 <token type="LiteralNumberBin"/>
87 </rule>
88 <rule pattern="-?(0|[1-9][0-9]*)">
89 <token type="LiteralNumberInteger"/>
90 </rule>
91 <rule pattern="'(\\['"\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|[^\\])'">
92 <token type="LiteralStringChar"/>
93 </rule>
94 <rule pattern="`[^`]*`">
95 <token type="LiteralString"/>
96 </rule>
97 </state>
98 <state name="root">
99 <rule pattern="{{(- )?/\*(.|\n)*?\*/( -)?}}">
100 <token type="CommentMultiline"/>
101 </rule>
102 <rule pattern="{{[-]?">
103 <token type="CommentPreproc"/>
104 <push state="template"/>
105 </rule>
106 <rule pattern="[^{]+">
107 <token type="Other"/>
108 </rule>
109 <rule pattern="{">
110 <token type="Other"/>
111 </rule>
112 </state>
113 </rules>
114</lexer>