...
1<lexer>
2 <config>
3 <name>Terraform</name>
4 <alias>terraform</alias>
5 <alias>tf</alias>
6 <filename>*.tf</filename>
7 <mime_type>application/x-tf</mime_type>
8 <mime_type>application/x-terraform</mime_type>
9 </config>
10 <rules>
11 <state name="string">
12 <rule pattern=""">
13 <token type="LiteralStringDouble"/>
14 <pop depth="1"/>
15 </rule>
16 <rule pattern="\\\\">
17 <token type="LiteralStringDouble"/>
18 </rule>
19 <rule pattern="\\\\"">
20 <token type="LiteralStringDouble"/>
21 </rule>
22 <rule pattern="\$\{">
23 <token type="LiteralStringInterpol"/>
24 <push state="interp-inside"/>
25 </rule>
26 <rule pattern="\$">
27 <token type="LiteralStringDouble"/>
28 </rule>
29 <rule pattern="[^"\\\\$]+">
30 <token type="LiteralStringDouble"/>
31 </rule>
32 </state>
33 <state name="interp-inside">
34 <rule pattern="\}">
35 <token type="LiteralStringInterpol"/>
36 <pop depth="1"/>
37 </rule>
38 <rule>
39 <include state="root"/>
40 </rule>
41 </state>
42 <state name="root">
43 <rule pattern="[\[\](),.{}]">
44 <token type="Punctuation"/>
45 </rule>
46 <rule pattern="-?[0-9]+">
47 <token type="LiteralNumber"/>
48 </rule>
49 <rule pattern="=>">
50 <token type="Punctuation"/>
51 </rule>
52 <rule pattern="(false|true)\b">
53 <token type="KeywordConstant"/>
54 </rule>
55 <rule pattern="/(?s)\*(((?!\*/).)*)\*/">
56 <token type="CommentMultiline"/>
57 </rule>
58 <rule pattern="\s*(#|//).*\n">
59 <token type="CommentSingle"/>
60 </rule>
61 <rule pattern="([a-zA-Z]\w*)(\s*)(=(?!>))">
62 <bygroups>
63 <token type="NameAttribute"/>
64 <token type="Text"/>
65 <token type="Text"/>
66 </bygroups>
67 </rule>
68 <rule pattern="^\s*(provisioner|variable|resource|provider|module|output|data)\b">
69 <token type="KeywordReserved"/>
70 </rule>
71 <rule pattern="(for|in)\b">
72 <token type="Keyword"/>
73 </rule>
74 <rule pattern="(module|count|data|each|var)">
75 <token type="NameBuiltin"/>
76 </rule>
77 <rule pattern="(parseint|signum|floor|ceil|log|max|min|abs|pow)\b">
78 <token type="NameBuiltin"/>
79 </rule>
80 <rule pattern="(trimsuffix|formatlist|trimprefix|trimspace|regexall|replace|indent|strrev|format|substr|chomp|split|title|regex|lower|upper|trim|join)\b">
81 <token type="NameBuiltin"/>
82 </rule>
83 <rule pattern="[^.](setintersection|coalescelist|setsubtract|setproduct|matchkeys|chunklist|transpose|contains|distinct|coalesce|setunion|reverse|flatten|element|compact|lookup|length|concat|values|zipmap|range|merge|slice|index|list|sort|keys|map)\b">
84 <token type="NameBuiltin"/>
85 </rule>
86 <rule pattern="[^.](base64decode|base64encode|base64gzip|jsondecode|jsonencode|yamldecode|yamlencode|csvdecode|urlencode)\b">
87 <token type="NameBuiltin"/>
88 </rule>
89 <rule pattern="(templatefile|filebase64|fileexists|pathexpand|basename|abspath|fileset|dirname|file)\b">
90 <token type="NameBuiltin"/>
91 </rule>
92 <rule pattern="(formatdate|timestamp|timeadd)\b">
93 <token type="NameBuiltin"/>
94 </rule>
95 <rule pattern="(filebase64sha256|filebase64sha512|base64sha512|base64sha256|filesha256|rsadecrypt|filesha512|filesha1|filemd5|uuidv5|bcrypt|sha256|sha512|sha1|uuid|md5)\b">
96 <token type="NameBuiltin"/>
97 </rule>
98 <rule pattern="(cidrnetmask|cidrsubnet|cidrhost)\b">
99 <token type="NameBuiltin"/>
100 </rule>
101 <rule pattern="(tostring|tonumber|tobool|tolist|tomap|toset|can|try)\b">
102 <token type="NameBuiltin"/>
103 </rule>
104 <rule pattern="=(?!>)|\+|-|\*|\/|:|!|%|>|<(?!<)|>=|<=|==|!=|&&|\||\?">
105 <token type="Operator"/>
106 </rule>
107 <rule pattern="\n|\s+|\\\n">
108 <token type="Text"/>
109 </rule>
110 <rule pattern="[a-zA-Z]\w*">
111 <token type="NameOther"/>
112 </rule>
113 <rule pattern=""">
114 <token type="LiteralStringDouble"/>
115 <push state="string"/>
116 </rule>
117 <rule pattern="(?s)(<<-?)(\w+)(\n\s*(?:(?!\2).)*\s*\n\s*)(\2)">
118 <bygroups>
119 <token type="Operator"/>
120 <token type="Operator"/>
121 <token type="LiteralString"/>
122 <token type="Operator"/>
123 </bygroups>
124 </rule>
125 </state>
126 <state name="declaration">
127 <rule pattern="(\s*)("(?:\\\\|\\"|[^"])*")(\s*)">
128 <bygroups>
129 <token type="Text"/>
130 <token type="NameVariable"/>
131 <token type="Text"/>
132 </bygroups>
133 </rule>
134 <rule pattern="\{">
135 <token type="Punctuation"/>
136 <pop depth="1"/>
137 </rule>
138 </state>
139 </rules>
140</lexer>
View as plain text