...

Source file src/github.com/alecthomas/chroma/lexers/c/cql.go

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

     1  package c
     2  
     3  import (
     4  	. "github.com/alecthomas/chroma" // nolint
     5  	"github.com/alecthomas/chroma/lexers/internal"
     6  )
     7  
     8  // CassandraCQL lexer.
     9  var CassandraCQL = internal.Register(MustNewLazyLexer(
    10  	&Config{
    11  		Name:            "Cassandra CQL",
    12  		Aliases:         []string{"cassandra", "cql"},
    13  		Filenames:       []string{"*.cql"},
    14  		MimeTypes:       []string{"text/x-cql"},
    15  		NotMultiline:    true,
    16  		CaseInsensitive: true,
    17  	},
    18  	cassandraCQLRules,
    19  ))
    20  
    21  func cassandraCQLRules() Rules {
    22  	return Rules{
    23  		"root": {
    24  			{`\s+`, TextWhitespace, nil},
    25  			{`(--|\/\/).*\n?`, CommentSingle, nil},
    26  			{`/\*`, CommentMultiline, Push("multiline-comments")},
    27  			{`(ascii|bigint|blob|boolean|counter|date|decimal|double|float|frozen|inet|int|list|map|set|smallint|text|time|timestamp|timeuuid|tinyint|tuple|uuid|varchar|varint)\b`, NameBuiltin, nil},
    28  			{Words(``, `\b`, `ADD`, `AGGREGATE`, `ALL`, `ALLOW`, `ALTER`, `AND`, `ANY`, `APPLY`, `AS`, `ASC`, `AUTHORIZE`, `BATCH`, `BEGIN`, `BY`, `CLUSTERING`, `COLUMNFAMILY`, `COMPACT`, `CONSISTENCY`, `COUNT`, `CREATE`, `CUSTOM`, `DELETE`, `DESC`, `DISTINCT`, `DROP`, `EACH_QUORUM`, `ENTRIES`, `EXISTS`, `FILTERING`, `FROM`, `FULL`, `GRANT`, `IF`, `IN`, `INDEX`, `INFINITY`, `INSERT`, `INTO`, `KEY`, `KEYS`, `KEYSPACE`, `KEYSPACES`, `LEVEL`, `LIMIT`, `LOCAL_ONE`, `LOCAL_QUORUM`, `MATERIALIZED`, `MODIFY`, `NAN`, `NORECURSIVE`, `NOSUPERUSER`, `NOT`, `OF`, `ON`, `ONE`, `ORDER`, `PARTITION`, `PASSWORD`, `PER`, `PERMISSION`, `PERMISSIONS`, `PRIMARY`, `QUORUM`, `RENAME`, `REVOKE`, `SCHEMA`, `SELECT`, `STATIC`, `STORAGE`, `SUPERUSER`, `TABLE`, `THREE`, `TO`, `TOKEN`, `TRUNCATE`, `TTL`, `TWO`, `TYPE`, `UNLOGGED`, `UPDATE`, `USE`, `USER`, `USERS`, `USING`, `VALUES`, `VIEW`, `WHERE`, `WITH`, `WRITETIME`, `REPLICATION`, `OR`, `REPLACE`, `FUNCTION`, `CALLED`, `INPUT`, `RETURNS`, `LANGUAGE`, `ROLE`, `ROLES`, `TRIGGER`, `DURABLE_WRITES`, `LOGIN`, `OPTIONS`, `LOGGED`, `SFUNC`, `STYPE`, `FINALFUNC`, `INITCOND`, `IS`, `CONTAINS`, `JSON`, `PAGING`, `OFF`), Keyword, nil},
    29  			{"[+*/<>=~!@#%^&|`?-]+", Operator, nil},
    30  			{
    31  				`(?s)(java|javascript)(\s+)(AS)(\s+)('|\$\$)(.*?)(\5)`,
    32  				UsingByGroup(
    33  					internal.Get,
    34  					1, 6,
    35  					NameBuiltin, TextWhitespace, Keyword, TextWhitespace,
    36  					LiteralStringHeredoc, LiteralStringHeredoc, LiteralStringHeredoc,
    37  				),
    38  				nil,
    39  			},
    40  			{`(true|false|null)\b`, KeywordConstant, nil},
    41  			{`0x[0-9a-f]+`, LiteralNumberHex, nil},
    42  			{`[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}`, LiteralNumberHex, nil},
    43  			{`\.[0-9]+(e[+-]?[0-9]+)?`, Error, nil},
    44  			{`-?[0-9]+(\.[0-9])?(e[+-]?[0-9]+)?`, LiteralNumberFloat, nil},
    45  			{`[0-9]+`, LiteralNumberInteger, nil},
    46  			{`'`, LiteralStringSingle, Push("string")},
    47  			{`"`, LiteralStringName, Push("quoted-ident")},
    48  			{`\$\$`, LiteralStringHeredoc, Push("dollar-string")},
    49  			{`[a-z_]\w*`, Name, nil},
    50  			{`:(['"]?)[a-z]\w*\b\1`, NameVariable, nil},
    51  			{`[;:()\[\]\{\},.]`, Punctuation, nil},
    52  		},
    53  		"multiline-comments": {
    54  			{`/\*`, CommentMultiline, Push("multiline-comments")},
    55  			{`\*/`, CommentMultiline, Pop(1)},
    56  			{`[^/*]+`, CommentMultiline, nil},
    57  			{`[/*]`, CommentMultiline, nil},
    58  		},
    59  		"string": {
    60  			{`[^']+`, LiteralStringSingle, nil},
    61  			{`''`, LiteralStringSingle, nil},
    62  			{`'`, LiteralStringSingle, Pop(1)},
    63  		},
    64  		"quoted-ident": {
    65  			{`[^"]+`, LiteralStringName, nil},
    66  			{`""`, LiteralStringName, nil},
    67  			{`"`, LiteralStringName, Pop(1)},
    68  		},
    69  		"dollar-string": {
    70  			{`[^\$]+`, LiteralStringHeredoc, nil},
    71  			{`\$\$`, LiteralStringHeredoc, Pop(1)},
    72  		},
    73  	}
    74  }
    75  

View as plain text