1<lexer>
 2  <config>
 3    <name>Meson</name>
 4    <alias>meson</alias>
 5    <alias>meson.build</alias>
 6    <filename>meson.build</filename>
 7    <filename>meson.options</filename>
 8    <filename>meson_options.txt</filename>
 9    <mime_type>text/x-meson</mime_type>
10  </config>
11  <rules>
12    <state name="root">
13      <rule pattern="#.*?$">
14        <token type="Comment"/>
15      </rule>
16      <rule pattern="&#39;&#39;&#39;.*&#39;&#39;&#39;">
17        <token type="LiteralStringSingle"/>
18      </rule>
19      <rule pattern="[1-9][0-9]*">
20        <token type="LiteralNumberInteger"/>
21      </rule>
22      <rule pattern="0o[0-7]+">
23        <token type="LiteralNumberOct"/>
24      </rule>
25      <rule pattern="0x[a-fA-F0-9]+">
26        <token type="LiteralNumberHex"/>
27      </rule>
28      <rule>
29        <include state="string"/>
30      </rule>
31      <rule>
32        <include state="keywords"/>
33      </rule>
34      <rule>
35        <include state="expr"/>
36      </rule>
37      <rule pattern="[a-zA-Z_][a-zA-Z_0-9]*">
38        <token type="Name"/>
39      </rule>
40      <rule pattern="\s+">
41        <token type="TextWhitespace"/>
42      </rule>
43    </state>
44    <state name="string">
45      <rule pattern="[&#39;]{3}([&#39;]{0,2}([^\\&#39;]|\\(.|\n)))*[&#39;]{3}">
46        <token type="LiteralString"/>
47      </rule>
48      <rule pattern="&#39;.*?(?&lt;!\\)(\\\\)*?&#39;">
49        <token type="LiteralString"/>
50      </rule>
51    </state>
52    <state name="keywords">
53      <rule pattern="(endforeach|continue|foreach|break|endif|else|elif|if)\b">
54        <token type="Keyword"/>
55      </rule>
56    </state>
57    <state name="expr">
58      <rule pattern="(in|and|or|not)\b">
59        <token type="OperatorWord"/>
60      </rule>
61      <rule pattern="(\*=|/=|%=|\+]=|-=|==|!=|\+|-|=)">
62        <token type="Operator"/>
63      </rule>
64      <rule pattern="[\[\]{}:().,?]">
65        <token type="Punctuation"/>
66      </rule>
67      <rule pattern="(false|true)\b">
68        <token type="KeywordConstant"/>
69      </rule>
70      <rule>
71        <include state="builtins"/>
72      </rule>
73      <rule pattern="(target_machine|build_machine|host_machine|meson)\b">
74        <token type="NameVariableMagic"/>
75      </rule>
76    </state>
77    <state name="builtins">
78      <rule pattern="(?&lt;!\.)(add_project_link_arguments|add_global_link_arguments|add_project_arguments|add_global_arguments|include_directories|configuration_data|declare_dependency|install_headers|both_libraries|install_subdir|add_test_setup|configure_file|static_library|shared_library|custom_target|add_languages|shared_module|set_variable|get_variable|find_library|find_program|build_target|install_data|environment|is_disabler|run_command|subdir_done|install_man|is_variable|subproject|dependency|join_paths|get_option|executable|generator|benchmark|disabler|project|message|library|summary|vcs_tag|warning|assert|subdir|range|files|error|test|jar)\b">
79        <token type="NameBuiltin"/>
80      </rule>
81      <rule pattern="(?&lt;!\.)import\b">
82        <token type="NameNamespace"/>
83      </rule>
84    </state>
85  </rules>
86</lexer>