mirror of
https://github.com/alecthomas/chroma.git
synced 2025-02-15 13:33:12 +02:00
This was done to speed up incremental compilation when working on lexers. That is, modifying a single lexer will no longer require recompiling all lexers. This is a (slightly) backwards breaking change in that lexers are no longer exported directly in the lexers package. The registry API is "aliased" at the old location.
58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
package p
|
|
|
|
import (
|
|
. "github.com/alecthomas/chroma" // nolint
|
|
"github.com/alecthomas/chroma/lexers/internal"
|
|
)
|
|
|
|
// Pig lexer.
|
|
var Pig = internal.Register(MustNewLexer(
|
|
&Config{
|
|
Name: "Pig",
|
|
Aliases: []string{"pig"},
|
|
Filenames: []string{"*.pig"},
|
|
MimeTypes: []string{"text/x-pig"},
|
|
CaseInsensitive: true,
|
|
},
|
|
Rules{
|
|
"root": {
|
|
{`\s+`, Text, nil},
|
|
{`--.*`, Comment, nil},
|
|
{`/\*[\w\W]*?\*/`, CommentMultiline, nil},
|
|
{`\\\n`, Text, nil},
|
|
{`\\`, Text, nil},
|
|
{`\'(?:\\[ntbrf\\\']|\\u[0-9a-f]{4}|[^\'\\\n\r])*\'`, LiteralString, nil},
|
|
Include("keywords"),
|
|
Include("types"),
|
|
Include("builtins"),
|
|
Include("punct"),
|
|
Include("operators"),
|
|
{`[0-9]*\.[0-9]+(e[0-9]+)?[fd]?`, LiteralNumberFloat, nil},
|
|
{`0x[0-9a-f]+`, LiteralNumberHex, nil},
|
|
{`[0-9]+L?`, LiteralNumberInteger, nil},
|
|
{`\n`, Text, nil},
|
|
{`([a-z_]\w*)(\s*)(\()`, ByGroups(NameFunction, Text, Punctuation), nil},
|
|
{`[()#:]`, Text, nil},
|
|
{`[^(:#\'")\s]+`, Text, nil},
|
|
{`\S+\s+`, Text, nil},
|
|
},
|
|
"keywords": {
|
|
{`(assert|and|any|all|arrange|as|asc|bag|by|cache|CASE|cat|cd|cp|%declare|%default|define|dense|desc|describe|distinct|du|dump|eval|exex|explain|filter|flatten|foreach|full|generate|group|help|if|illustrate|import|inner|input|into|is|join|kill|left|limit|load|ls|map|matches|mkdir|mv|not|null|onschema|or|order|outer|output|parallel|pig|pwd|quit|register|returns|right|rm|rmf|rollup|run|sample|set|ship|split|stderr|stdin|stdout|store|stream|through|union|using|void)\b`, Keyword, nil},
|
|
},
|
|
"builtins": {
|
|
{`(AVG|BinStorage|cogroup|CONCAT|copyFromLocal|copyToLocal|COUNT|cross|DIFF|MAX|MIN|PigDump|PigStorage|SIZE|SUM|TextLoader|TOKENIZE)\b`, NameBuiltin, nil},
|
|
},
|
|
"types": {
|
|
{`(bytearray|BIGINTEGER|BIGDECIMAL|chararray|datetime|double|float|int|long|tuple)\b`, KeywordType, nil},
|
|
},
|
|
"punct": {
|
|
{`[;(){}\[\]]`, Punctuation, nil},
|
|
},
|
|
"operators": {
|
|
{`[#=,./%+\-?]`, Operator, nil},
|
|
{`(eq|gt|lt|gte|lte|neq|matches)\b`, Operator, nil},
|
|
{`(==|<=|<|>=|>|!=)`, Operator, nil},
|
|
},
|
|
},
|
|
))
|