iscdhcpd.xml

 1<lexer>
 2  <config>
 3    <name>ISCdhcpd</name>
 4    <alias>iscdhcpd</alias>
 5    <filename>dhcpd.conf</filename>
 6  </config>
 7  <rules>
 8    <state name="interpol">
 9      <rule pattern="\$[{(]">
10        <token type="LiteralStringInterpol"/>
11        <push/>
12      </rule>
13      <rule pattern="[})]">
14        <token type="LiteralStringInterpol"/>
15        <pop depth="1"/>
16      </rule>
17      <rule pattern="[^${()}]+">
18        <token type="LiteralStringInterpol"/>
19      </rule>
20    </state>
21    <state name="root">
22      <rule pattern="#.*?\n">
23        <token type="Comment"/>
24      </rule>
25      <rule pattern="(hardware|packet|leased-address|host-decl-name|lease-time|max-lease-time|client-state|config-option|option|filename|next-server|allow|deny|match|ignore)\b">
26         <token type="Keyword"/>
27      </rule>
28      <rule pattern="(include|group|host|subnet|subnet6|netmask|class|subclass|pool|failover|include|shared-network|range|range6|prefix6)\b">
29         <token type="KeywordType"/>
30      </rule>
31      <rule pattern="(on|off|true|false|none)\b">
32        <token type="KeywordConstant"/>
33      </rule>
34      <rule pattern="(if|elsif|else)\b">
35        <token type="Keyword"/>
36      </rule>
37      <rule pattern="(exists|known|static)\b">
38        <token type="KeywordConstant"/>
39      </rule>
40      <rule pattern="(and|or|not)\b">
41        <token type="OperatorWord"/>
42      </rule>
43      <rule pattern="(==|!=|~=|~~|=)">
44        <token type="Operator"/>
45      </rule>
46      <rule pattern="[{},;\)]">
47        <token type="Punctuation"/>
48      </rule>
49      <rule pattern="\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}">
50        <token type="LiteralNumberFloat"/>
51      </rule>
52      <rule pattern="\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}">
53        <token type="LiteralNumberFloat"/>
54      </rule>
55      <rule pattern="[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}">
56        <token type="LiteralNumberHex"/>
57      </rule>
58      <rule pattern="&#34;">
59        <token type="LiteralString"/>
60        <push state="doublequotestring"/>
61      </rule>
62      <rule pattern="([\w\-.]+)(\s*)(\()">
63        <bygroups>
64          <token type="NameFunction"/>
65          <token type="Text"/>
66          <token type="Punctuation"/>
67        </bygroups>
68      </rule>
69      <rule pattern="[\w\-.]+">
70        <token type="NameVariable"/>
71      </rule>
72      <rule pattern="\s+">
73        <token type="Text"/>
74      </rule>
75    </state>
76    <state name="doublequotestring">
77      <rule pattern="\$[{(]">
78        <token type="LiteralStringInterpol"/>
79        <push state="interpol"/>
80      </rule>
81      <rule pattern="\\.">
82        <token type="LiteralStringEscape"/>
83      </rule>
84      <rule pattern="&#34;">
85        <token type="LiteralString"/>
86        <pop depth="1"/>
87      </rule>
88      <rule pattern="\n">
89        <token type="LiteralString"/>
90      </rule>
91      <rule pattern=".">
92        <token type="LiteralString"/>
93      </rule>
94    </state>
95  </rules>
96</lexer>