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="'''.*'''">
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="[']{3}([']{0,2}([^\\']|\\(.|\n)))*[']{3}">
46 <token type="LiteralString"/>
47 </rule>
48 <rule pattern="'.*?(?<!\\)(\\\\)*?'">
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="(?<!\.)(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="(?<!\.)import\b">
82 <token type="NameNamespace"/>
83 </rule>
84 </state>
85 </rules>
86</lexer>