...

Source file src/github.com/alecthomas/chroma/lexers/m/meson.go

Documentation: github.com/alecthomas/chroma/lexers/m

     1  package m
     2  
     3  import (
     4  	. "github.com/alecthomas/chroma" // nolint
     5  	"github.com/alecthomas/chroma/lexers/internal"
     6  )
     7  
     8  // Meson lexer.
     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