1<lexer>
 2  <config>
 3    <name>Bicep</name>
 4    <alias>bicep</alias>
 5    <filename>*.bicep</filename>
 6  </config>
 7  <rules>
 8    <state name="root">
 9      <rule pattern="//[^\n\r]+">
10        <token type="CommentSingle"/>
11      </rule>
12      <rule pattern="/\*.*?\*/">
13        <token type="CommentMultiline"/>
14      </rule>
15      <rule pattern="([&#39;]?\w+[&#39;]?)(:)">
16        <bygroups>
17          <token type="NameProperty"/>
18          <token type="Punctuation"/>
19        </bygroups>
20      </rule>
21      <rule pattern="\b(&#39;(resourceGroup|subscription|managementGroup|tenant)&#39;)\b">
22        <token type="KeywordNamespace"/>
23      </rule>
24      <rule pattern="&#39;[\w\$\{\(\)\}\.]{1,}?&#39;">
25        <token type="LiteralStringInterpol"/>
26      </rule>
27      <rule pattern="(&#39;&#39;&#39;|&#39;).*?(&#39;&#39;&#39;|&#39;)">
28        <token type="LiteralString"/>
29      </rule>
30      <rule pattern="\b(allowed|batchSize|description|maxLength|maxValue|metadata|minLength|minValue|secure)\b">
31        <token type="NameDecorator"/>
32      </rule>
33      <rule pattern="\b(az|sys)\.">
34        <token type="NameNamespace"/>
35      </rule>
36      <rule pattern="\b(any|array|concat|contains|empty|first|intersection|items|last|length|min|max|range|skip|take|union|dateTimeAdd|utcNow|deployment|environment|loadFileAsBase64|loadTextContent|int|json|extensionResourceId|getSecret|list|listKeys|listKeyValue|listAccountSas|listSecrets|pickZones|reference|resourceId|subscriptionResourceId|tenantResourceId|managementGroup|resourceGroup|subscription|tenant|base64|base64ToJson|base64ToString|dataUri|dataUriToString|endsWith|format|guid|indexOf|lastIndexOf|length|newGuid|padLeft|replace|split|startsWith|string|substring|toLower|toUpper|trim|uniqueString|uri|uriComponent|uriComponentToString)\b">
37        <token type="NameFunction"/>
38      </rule>
39      <rule pattern="\b(bool)(\()">
40        <bygroups>
41          <token type="NameFunction"/>
42          <token type="Punctuation"/>
43        </bygroups>
44      </rule>
45      <rule pattern="\b(for|if|in)\b">
46        <token type="Keyword"/>
47      </rule>
48      <rule pattern="\b(module|output|param|resource|var)\b">
49        <token type="KeywordDeclaration"/>
50      </rule>
51      <rule pattern="\b(array|bool|int|object|string)\b">
52        <token type="KeywordType"/>
53      </rule>
54      <rule pattern="(&gt;=|&gt;|&lt;=|&lt;|==|!=|=~|!~|::|&amp;&amp;|\?\?|!|-|%|\*|\/|\+)">
55        <token type="Operator"/>
56      </rule>
57      <rule pattern="[\(\)\[\]\.:\?{}@=]">
58        <token type="Punctuation"/>
59      </rule>
60      <rule pattern="[\w_-]+">
61        <token type="Text"/>
62      </rule>
63      <rule pattern="\s+">
64        <token type="TextWhitespace"/>
65      </rule>
66    </state>
67  </rules>
68</lexer>