1<lexer>
 2  <config>
 3    <name>KDL</name>
 4    <alias>kdl</alias>
 5    <filename>*.kdl</filename>
 6  </config>
 7  <rules>
 8    <state name="root">
 9      <rule pattern="((?&lt;={|;)|^)\s*(?![/\\\{\}#;\[\]\=])[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|\.\(\)\x{0080}-\x{0001f645}]+\d*?[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|\.\(\)\x{0080}-\x{0001f645}]*?"><token type="NameLabel"/></rule>
10      <rule pattern="(#true|#false|#null|#nan|#inf|#-inf)\b"><token type="KeywordConstant"/></rule>
11      <rule pattern="[{}=;\\]"><token type="Operator"/></rule>
12      <rule pattern="(\b([0-9-\+]|-|\+)[0-9_]*?\.[0-9][0-9_]*?([eE][+-]?[0-9_]+)?\b|\b[0-9][0-9_]*?(\.[0-9][0-9_]*?)?[eE][+-]?[0-9_]+\b)"><token type="LiteralNumberFloat"/></rule>
13      <rule pattern="\b[0-9\-\+][0-9_]*\b"><token type="LiteralNumber"/></rule>
14      <rule pattern="\b0x[a-fA-F0-9][a-fA-F0-9_]*?\b"><token type="LiteralNumberHex"/></rule>
15      <rule pattern="\b0o[0-7][0-7_]*\b"><token type="LiteralNumberOct"/></rule>
16      <rule pattern="\b0b[01][01_]*?\b"><token type="LiteralNumberBin"/></rule>
17      <rule pattern="#+(\&quot;&quot;&quot;|&quot;).*?(&quot;&quot;&quot;|&quot;)#+"><token type="LiteralString"/></rule>
18      <rule pattern="#?&quot;&quot;&quot;"><token type="LiteralString"/><push state="multiline_string"/></rule>
19      <rule pattern="#?&quot;"><token type="LiteralString"/><push state="string"/></rule>
20      <rule pattern="/\*"><token type="CommentMultiline"/><push state="comment"/></rule>
21      <rule pattern="/\*!"><token type="LiteralStringDoc"/><push state="doccomment"/></rule>
22      <rule pattern="/-\s*{"><token type="CommentMultiline"/><push state="slashdash_block_comment"/></rule>
23      <rule pattern="\s*/-\s?[^\s=]*?\s?{"><token type="CommentMultiline"/><push state="slashdash_node_comment"/></rule>
24      <rule pattern="(?&lt;!^)\s*/-\s*(&quot;.*&quot;|.*?)?\s"><token type="CommentSingle"/></rule>
25      <rule pattern="(?&lt;=^)\s*/-[^{]+{"><token type="CommentMultiline"/><push state="slashdash_node_with_children_comment"/></rule>
26      <rule pattern="(\/\/(.*?)\n|(?&lt;!^)\s*/-\s*?\s)"><token type="CommentSingle"/></rule>
27      <rule pattern="(?![/\\\{\}#;\[\]\=])[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|.\(\)\x{0080}-\x{0001f645}]+\d*?[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|.\(\)\x{0080}-\x{0001f645}]*(=)"><token type="NameAttribute"/></rule>
28      <rule pattern="(?![/\\{\}#;\[\]\=])[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|.\(\)\x{0080}-\x{0001f645}]+\d*[&lt;&gt;:\w\-_~,\&#x27;`!\?@\$%^&amp;*+|.\(\)\x{0080}-\x{0001f645}]*?"><token type="LiteralString"/></rule>
29      <rule pattern="\s"><token type="TextWhitespace"/></rule>
30    </state>
31    <state name="string">
32      <rule pattern="&quot;#?"><token type="LiteralString"/><pop depth="1"/></rule>
33      <rule pattern="\\[&#x27;&quot;\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}"><token type="LiteralStringEscape"/></rule>
34      <rule pattern="[^\\&quot;]+"><token type="LiteralString"/></rule>
35      <rule pattern="\\"><token type="LiteralString"/></rule>
36    </state>
37    <state name="multiline_string">
38      <rule pattern="&quot;&quot;&quot;#?"><token type="LiteralString"/><pop depth="1"/></rule>
39      <rule pattern="\\[&#x27;&quot;\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}"><token type="LiteralStringEscape"/></rule>
40      <rule pattern="&quot;"><token type="LiteralString"/></rule>
41      <rule pattern="[^\\&quot;]+"><token type="LiteralString"/></rule>
42      <rule pattern="\\"><token type="LiteralString"/></rule>
43    </state>
44    <state name="slashdash_block_comment">
45      <rule pattern="[^}]+"><token type="CommentMultiline"/></rule>
46      <rule pattern="/-\s*{"><token type="CommentMultiline"/><push/></rule>
47      <rule pattern="\}"><token type="CommentMultiline"/><pop depth="1"/></rule>
48      <rule pattern="[\}]"><token type="CommentMultiline"/></rule>
49    </state>
50    <state name="slashdash_node_comment">
51      <rule pattern="[^\}]+"><token type="CommentMultiline"/></rule>
52      <rule pattern="^\s*?/-.*?\s?{"><token type="CommentMultiline"/><push/></rule>
53      <rule pattern="\}"><token type="CommentMultiline"/><pop depth="1"/></rule>
54      <rule pattern="[\}]"><token type="CommentMultiline"/></rule>
55    </state>
56    <state name="slashdash_node_with_children_comment">
57      <rule pattern="[^\}]+"><token type="CommentMultiline"/></rule>
58      <rule pattern="(?&lt;=^)\s*/-[^{]+{"><token type="CommentMultiline"/><push/></rule>
59      <rule pattern="\}"><token type="CommentMultiline"/><pop depth="1"/></rule>
60      <rule pattern="[\}]"><token type="CommentMultiline"/></rule>
61    </state>
62    <state name="comment">
63      <rule pattern="[^*/]+"><token type="CommentMultiline"/></rule>
64      <rule pattern="/\*"><token type="CommentMultiline"/><push/></rule>
65      <rule pattern="\*/"><token type="CommentMultiline"/><pop depth="1"/></rule>
66      <rule pattern="[*/]"><token type="CommentMultiline"/></rule>
67    </state>
68    <state name="doccomment">
69      <rule pattern="[^*/]+"><token type="LiteralStringDoc"/></rule>
70      <rule pattern="/\*"><token type="LiteralStringDoc"/><push/></rule>
71      <rule pattern="\*/"><token type="LiteralStringDoc"/><pop depth="1"/></rule>
72      <rule pattern="[*/]"><token type="LiteralStringDoc"/></rule>
73    </state>
74  </rules>
75</lexer>