1<lexer>
2 <config>
3 <name>Bicep</name>
4 <alias>bicep</alias>
5 <filename>*.bicep</filename>
6 </config>
7 <rules>
8 <state name="interp">
9 <rule pattern="'">
10 <token type="LiteralString"/>
11 <pop depth="1"/>
12 </rule>
13 <rule pattern="\\.">
14 <token type="LiteralString"/>
15 </rule>
16 <rule pattern="\$\{">
17 <token type="LiteralStringInterpol"/>
18 <push state="interp-inside"/>
19 </rule>
20 <rule pattern="\$">
21 <token type="LiteralString"/>
22 </rule>
23 <rule pattern="[^'\\$]+">
24 <token type="LiteralString"/>
25 </rule>
26 </state>
27 <state name="interp-inside">
28 <rule pattern="\}">
29 <token type="LiteralStringInterpol"/>
30 <pop depth="1"/>
31 </rule>
32 <rule>
33 <include state="root"/>
34 </rule>
35 </state>
36 <state name="commentsandwhitespace">
37 <rule pattern="//[^\n\r]+">
38 <token type="CommentSingle"/>
39 </rule>
40 <rule pattern="/\*.*?\*/">
41 <token type="CommentMultiline"/>
42 </rule>
43 <rule pattern="\s+">
44 <token type="TextWhitespace"/>
45 </rule>
46 </state>
47 <state name="root">
48 <rule>
49 <include state="commentsandwhitespace"/>
50 </rule>
51 <rule pattern="'''.*?'''">
52 <token type="LiteralString"/>
53 </rule>
54 <rule pattern="'">
55 <token type="LiteralString"/>
56 <push state="interp"/>
57 </rule>
58 <rule pattern="#[\w-]+\b">
59 <token type="CommentPreproc"/>
60 </rule>
61 <rule pattern="[\w_]+(?=\()">
62 <token type="NameFunction"/>
63 </rule>
64 <rule pattern="\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with|using|func|assert)\b">
65 <token type="KeywordDeclaration"/>
66 </rule>
67 <rule pattern="\b(true|false|null)\b">
68 <token type="KeywordConstant"/>
69 </rule>
70 <rule pattern="(>=|>|<=|<|==|!=|=~|!~|::|&&|\?\?|!|-|%|\*|\/|\+)">
71 <token type="Operator"/>
72 </rule>
73 <rule pattern="(\(|\)|\[|\]|\.|:|\?|{|}|@|,|\||=>|=)">
74 <token type="Punctuation"/>
75 </rule>
76 <rule pattern="[\w_]+">
77 <token type="NameVariable"/>
78 </rule>
79 <rule pattern="[0-9]+">
80 <token type="LiteralNumberInteger"/>
81 </rule>
82 </state>
83 </rules>
84</lexer>