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.txt</filename>
    
  8.     <mime_type>text/x-meson</mime_type>
    
  9.   </config>
    
  10.   <rules>
    
  11.     <state name="root">
    
  12.       <rule pattern="#.*?$">
    
  13.         <token type="Comment"/>
    
  14.       </rule>
    
  15.       <rule pattern="&#39;&#39;&#39;.*&#39;&#39;&#39;">
    
  16.         <token type="LiteralStringSingle"/>
    
  17.       </rule>
    
  18.       <rule pattern="[1-9][0-9]*">
    
  19.         <token type="LiteralNumberInteger"/>
    
  20.       </rule>
    
  21.       <rule pattern="0o[0-7]+">
    
  22.         <token type="LiteralNumberOct"/>
    
  23.       </rule>
    
  24.       <rule pattern="0x[a-fA-F0-9]+">
    
  25.         <token type="LiteralNumberHex"/>
    
  26.       </rule>
    
  27.       <rule>
    
  28.         <include state="string"/>
    
  29.       </rule>
    
  30.       <rule>
    
  31.         <include state="keywords"/>
    
  32.       </rule>
    
  33.       <rule>
    
  34.         <include state="expr"/>
    
  35.       </rule>
    
  36.       <rule pattern="[a-zA-Z_][a-zA-Z_0-9]*">
    
  37.         <token type="Name"/>
    
  38.       </rule>
    
  39.       <rule pattern="\s+">
    
  40.         <token type="TextWhitespace"/>
    
  41.       </rule>
    
  42.     </state>
    
  43.     <state name="string">
    
  44.       <rule pattern="[&#39;]{3}([&#39;]{0,2}([^\\&#39;]|\\(.|\n)))*[&#39;]{3}">
    
  45.         <token type="LiteralString"/>
    
  46.       </rule>
    
  47.       <rule pattern="&#39;.*?(?&lt;!\\)(\\\\)*?&#39;">
    
  48.         <token type="LiteralString"/>
    
  49.       </rule>
    
  50.     </state>
    
  51.     <state name="keywords">
    
  52.       <rule pattern="(endforeach|continue|foreach|break|endif|else|elif|if)\b">
    
  53.         <token type="Keyword"/>
    
  54.       </rule>
    
  55.     </state>
    
  56.     <state name="expr">
    
  57.       <rule pattern="(in|and|or|not)\b">
    
  58.         <token type="OperatorWord"/>
    
  59.       </rule>
    
  60.       <rule pattern="(\*=|/=|%=|\+]=|-=|==|!=|\+|-|=)">
    
  61.         <token type="Operator"/>
    
  62.       </rule>
    
  63.       <rule pattern="[\[\]{}:().,?]">
    
  64.         <token type="Punctuation"/>
    
  65.       </rule>
    
  66.       <rule pattern="(false|true)\b">
    
  67.         <token type="KeywordConstant"/>
    
  68.       </rule>
    
  69.       <rule>
    
  70.         <include state="builtins"/>
    
  71.       </rule>
    
  72.       <rule pattern="(target_machine|build_machine|host_machine|meson)\b">
    
  73.         <token type="NameVariableMagic"/>
    
  74.       </rule>
    
  75.     </state>
    
  76.     <state name="builtins">
    
  77.       <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">
    
  78.         <token type="NameBuiltin"/>
    
  79.       </rule>
    
  80.       <rule pattern="(?&lt;!\.)import\b">
    
  81.         <token type="NameNamespace"/>
    
  82.       </rule>
    
  83.     </state>
    
  84.   </rules>
    
  85. </lexer>