1 package m
2
3 import (
4 . "github.com/alecthomas/chroma"
5 "github.com/alecthomas/chroma/lexers/internal"
6 )
7
8
9 var Meson = internal.Register(MustNewLazyLexer(
10 &Config{
11 Name: "Meson",
12 Aliases: []string{"meson", "meson.build"},
13 Filenames: []string{"meson.build", "meson_options.txt"},
14 MimeTypes: []string{"text/x-meson"},
15 },
16 func() Rules {
17 return Rules{
18 "root": {
19 {`#.*?$`, Comment, nil},
20 {`'''.*'''`, LiteralStringSingle, nil},
21 {`[1-9][0-9]*`, LiteralNumberInteger, nil},
22 {`0o[0-7]+`, LiteralNumberOct, nil},
23 {`0x[a-fA-F0-9]+`, LiteralNumberHex, nil},
24 Include("string"),
25 Include("keywords"),
26 Include("expr"),
27 {`[a-zA-Z_][a-zA-Z_0-9]*`, Name, nil},
28 {`\s+`, TextWhitespace, nil},
29 },
30 "string": {
31 {`[']{3}([']{0,2}([^\\']|\\(.|\n)))*[']{3}`, LiteralString, nil},
32 {`'.*?(?<!\\)(\\\\)*?'`, LiteralString, nil},
33 },
34 "keywords": {
35 {Words(``, `\b`, `if`, `elif`, `else`, `endif`, `foreach`, `endforeach`, `break`, `continue`), Keyword, nil},
36 },
37 "expr": {
38 {`(in|and|or|not)\b`, OperatorWord, nil},
39 {`(\*=|/=|%=|\+]=|-=|==|!=|\+|-|=)`, Operator, nil},
40 {`[\[\]{}:().,?]`, Punctuation, nil},
41 {Words(``, `\b`, `true`, `false`), KeywordConstant, nil},
42 Include("builtins"),
43 {Words(``, `\b`, `meson`, `build_machine`, `host_machine`, `target_machine`), NameVariableMagic, nil},
44 },
45 "builtins": {
46 {Words(`(?<!\.)`, `\b`, `add_global_arguments`, `add_global_link_arguments`, `add_languages`, `add_project_arguments`, `add_project_link_arguments`, `add_test_setup`, `assert`, `benchmark`, `both_libraries`, `build_target`, `configuration_data`, `configure_file`, `custom_target`, `declare_dependency`, `dependency`, `disabler`, `environment`, `error`, `executable`, `files`, `find_library`, `find_program`, `generator`, `get_option`, `get_variable`, `include_directories`, `install_data`, `install_headers`, `install_man`, `install_subdir`, `is_disabler`, `is_variable`, `jar`, `join_paths`, `library`, `message`, `project`, `range`, `run_command`, `set_variable`, `shared_library`, `shared_module`, `static_library`, `subdir`, `subdir_done`, `subproject`, `summary`, `test`, `vcs_tag`, `warning`), NameBuiltin, nil},
47 {`(?<!\.)import\b`, NameNamespace, nil},
48 },
49 }
50 },
51 ))
52
View as plain text