|
- package m
-
- import (
- . "github.com/alecthomas/chroma" // nolint
- "github.com/alecthomas/chroma/lexers/internal"
- )
-
- // mcfunction lexer.
- var MCFunction = internal.Register(MustNewLazyLexer(
- &Config{
- Name: "mcfunction",
- Aliases: []string{"mcfunction"},
- Filenames: []string{"*.mcfunction"},
- MimeTypes: []string{},
- NotMultiline: true,
- DotAll: true,
- },
- func() Rules {
- return Rules{
- "simplevalue": {
- {`(true|false)`, KeywordConstant, nil},
- {`[01]b`, LiteralNumber, nil},
- {`-?(0|[1-9]\d*)(\.\d+[eE](\+|-)?\d+|[eE](\+|-)?\d+|\.\d+)`, LiteralNumberFloat, nil},
- {`(-?\d+)(\.\.)(-?\d+)`, ByGroups(LiteralNumberInteger, Punctuation, LiteralNumberInteger), nil},
- {`-?(0|[1-9]\d*)`, LiteralNumberInteger, nil},
- {`"(\\\\|\\"|[^"])*"`, LiteralStringDouble, nil},
- {`'[^']+'`, LiteralStringSingle, nil},
- {`([!#]?)(\w+)`, ByGroups(Punctuation, Text), nil},
- },
- "nbtobjectattribute": {
- Include("nbtvalue"),
- {`:`, Punctuation, nil},
- {`,`, Punctuation, Pop(1)},
- {`\}`, Punctuation, Pop(2)},
- },
- "nbtobjectvalue": {
- {`("(\\\\|\\"|[^"])*"|[a-zA-Z0-9_]+)`, NameTag, Push("nbtobjectattribute")},
- {`\}`, Punctuation, Pop(1)},
- },
- "nbtarrayvalue": {
- Include("nbtvalue"),
- {`,`, Punctuation, nil},
- {`\]`, Punctuation, Pop(1)},
- },
- "nbtvalue": {
- Include("simplevalue"),
- {`\{`, Punctuation, Push("nbtobjectvalue")},
- {`\[`, Punctuation, Push("nbtarrayvalue")},
- },
- "argumentvalue": {
- Include("simplevalue"),
- {`,`, Punctuation, Pop(1)},
- {`[}\]]`, Punctuation, Pop(2)},
- },
- "argumentlist": {
- {`(nbt)(={)`, ByGroups(NameAttribute, Punctuation), Push("nbtobjectvalue")},
- {`([A-Za-z0-9/_!]+)(={)`, ByGroups(NameAttribute, Punctuation), Push("argumentlist")},
- {`([A-Za-z0-9/_!]+)(=)`, ByGroups(NameAttribute, Punctuation), Push("argumentvalue")},
- Include("simplevalue"),
- {`,`, Punctuation, nil},
- {`[}\]]`, Punctuation, Pop(1)},
- },
- "root": {
- {`#.*?\n`, CommentSingle, nil},
- {Words(`/?`, `\b`, `ability`, `attributes`, `advancement`,
- `ban`, `ban-ip`, `banlist`, `bossbar`,
- `camerashake`, `classroommode`, `clear`,
- `clearspawnpoint`, `clone`, `code`, `collect`,
- `createagent`, `data`, `datapack`, `debug`,
- `defaultgamemode`, `deop`, `destroy`, `detect`,
- `detectredstone`, `difficulty`, `dropall`,
- `effect`, `enchant`, `event`, `execute`,
- `experience`, `fill`, `flog`, `forceload`,
- `function`, `gamemode`, `gamerule`,
- `geteduclientinfo`, `give`, `help`, `item`,
- `immutableworld`, `kick`, `kill`, `list`,
- `locate`, `locatebiome`, `loot`, `me`, `mixer`,
- `mobevent`, `move`, `msg`, `music`, `op`,
- `pardon`, `particle`, `playanimation`,
- `playsound`, `position`, `publish`,
- `raytracefog`, `recipe`, `reload`, `remove`,
- `replaceitem`, `ride`, `save`, `save-all`,
- `save-off`, `save-on`, `say`, `schedule`,
- `scoreboard`, `seed`, `setblock`,
- `setidletimeout`, `setmaxplayers`,
- `setworldspawn`, `spawnpoint`, `spectate`,
- `spreadplayers`, `stop`, `stopsound`,
- `structure`, `summon`, `tag`, `team`, `teammsg`,
- `teleport`, `tell`, `tellraw`, `testfor`,
- `testforblock`, `testforblocks`, `tickingarea`,
- `time`, `title`, `toggledownfall`, `tp`,
- `tpagent`, `transfer`, `transferserver`,
- `trigger`, `turn`, `w`, `weather`, `whitelist`,
- `worldborder`, `worldbuilder`, `wsserver`, `xp`,
- ), KeywordReserved, nil},
- {Words(``, ``, `@p`, `@r`, `@a`, `@e`, `@s`, `@c`, `@v`),
- KeywordConstant, nil},
- {`\[`, Punctuation, Push("argumentlist")},
- {`{`, Punctuation, Push("nbtobjectvalue")},
- {`~`, NameBuiltin, nil},
- {`([a-zA-Z_]+:)?[a-zA-Z_]+\b`, Text, nil},
- {`([a-z]+)(\.)([0-9]+)\b`, ByGroups(Text, Punctuation, LiteralNumber), nil},
- {`([<>=]|<=|>=)`, Punctuation, nil},
- Include("simplevalue"),
- {`\s+`, TextWhitespace, nil},
- },
- }
- },
- ))
|