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="((?<={|;)|^)\s*(?![/\\\{\}#;\[\]\=])[<>:\w\-_~,\'`!\?@\$%^&*+|\.\(\)\x{0080}-\x{0001f645}]+\d*?[<>:\w\-_~,\'`!\?@\$%^&*+|\.\(\)\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="#+(\"""|").*?("""|")#+"><token type="LiteralString"/></rule>
18 <rule pattern="#?""""><token type="LiteralString"/><push state="multiline_string"/></rule>
19 <rule pattern="#?""><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="(?<!^)\s*/-\s*(".*"|.*?)?\s"><token type="CommentSingle"/></rule>
25 <rule pattern="(?<=^)\s*/-[^{]+{"><token type="CommentMultiline"/><push state="slashdash_node_with_children_comment"/></rule>
26 <rule pattern="(\/\/(.*?)\n|(?<!^)\s*/-\s*?\s)"><token type="CommentSingle"/></rule>
27 <rule pattern="(?![/\\\{\}#;\[\]\=])[<>:\w\-_~,\'`!\?@\$%^&*+|.\(\)\x{0080}-\x{0001f645}]+\d*?[<>:\w\-_~,\'`!\?@\$%^&*+|.\(\)\x{0080}-\x{0001f645}]*(=)"><token type="NameAttribute"/></rule>
28 <rule pattern="(?![/\\{\}#;\[\]\=])[<>:\w\-_~,\'`!\?@\$%^&*+|.\(\)\x{0080}-\x{0001f645}]+\d*[<>:\w\-_~,\'`!\?@\$%^&*+|.\(\)\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=""#?"><token type="LiteralString"/><pop depth="1"/></rule>
33 <rule pattern="\\['"\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}"><token type="LiteralStringEscape"/></rule>
34 <rule pattern="[^\\"]+"><token type="LiteralString"/></rule>
35 <rule pattern="\\"><token type="LiteralString"/></rule>
36 </state>
37 <state name="multiline_string">
38 <rule pattern=""""#?"><token type="LiteralString"/><pop depth="1"/></rule>
39 <rule pattern="\\['"\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}"><token type="LiteralStringEscape"/></rule>
40 <rule pattern="""><token type="LiteralString"/></rule>
41 <rule pattern="[^\\"]+"><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="(?<=^)\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>