1package s
2
3import (
4 . "github.com/alecthomas/chroma" // nolint
5 "github.com/alecthomas/chroma/lexers/internal"
6)
7
8// Sparql lexer.
9var Sparql = internal.Register(MustNewLexer(
10 &Config{
11 Name: "SPARQL",
12 Aliases: []string{"sparql"},
13 Filenames: []string{"*.rq", "*.sparql"},
14 MimeTypes: []string{"application/sparql-query"},
15 },
16 Rules{
17 "root": {
18 {`\s+`, Text, nil},
19 {`((?i)select|construct|describe|ask|where|filter|group\s+by|minus|distinct|reduced|from\s+named|from|order\s+by|desc|asc|limit|offset|bindings|load|clear|drop|create|add|move|copy|insert\s+data|delete\s+data|delete\s+where|delete|insert|using\s+named|using|graph|default|named|all|optional|service|silent|bind|union|not\s+in|in|as|having|to|prefix|base)\b`, Keyword, nil},
20 {`(a)\b`, Keyword, nil},
21 {"(<(?:[^<>\"{}|^`\\\\\\x00-\\x20])*>)", NameLabel, nil},
22 {`(_:[0-9a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_](?:[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀.]*[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀])?)`, NameLabel, nil},
23 {`[?$][0-9a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_][a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_0-9·̀-ͯ‿-⁀]*`, NameVariable, nil},
24 {`([a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�](?:[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀.]*[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀])?)?(\:)((?:[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_:0-9]|(?:%[0-9A-Fa-f][0-9A-Fa-f])|(?:\\[ _~.\-!$&"()*+,;=/?#@%]))(?:(?:[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀.:]|(?:%[0-9A-Fa-f][0-9A-Fa-f])|(?:\\[ _~.\-!$&"()*+,;=/?#@%]))*(?:[a-zA-ZÀ-ÖØ-öø-˿Ͱ-ͽͿ--⁰-Ⰰ-、-豈-﷏ﷰ-�_\-0-9·̀-ͯ‿-⁀:]|(?:%[0-9A-Fa-f][0-9A-Fa-f])|(?:\\[ _~.\-!$&"()*+,;=/?#@%])))?)?`, ByGroups(NameNamespace, Punctuation, NameTag), nil},
25 {`((?i)str|lang|langmatches|datatype|bound|iri|uri|bnode|rand|abs|ceil|floor|round|concat|strlen|ucase|lcase|encode_for_uri|contains|strstarts|strends|strbefore|strafter|year|month|day|hours|minutes|seconds|timezone|tz|now|md5|sha1|sha256|sha384|sha512|coalesce|if|strlang|strdt|sameterm|isiri|isuri|isblank|isliteral|isnumeric|regex|substr|replace|exists|not\s+exists|count|sum|min|max|avg|sample|group_concat|separator)\b`, NameFunction, nil},
26 {`(true|false)`, KeywordConstant, nil},
27 {`[+\-]?(\d+\.\d*[eE][+-]?\d+|\.?\d+[eE][+-]?\d+)`, LiteralNumberFloat, nil},
28 {`[+\-]?(\d+\.\d*|\.\d+)`, LiteralNumberFloat, nil},
29 {`[+\-]?\d+`, LiteralNumberInteger, nil},
30 {`(\|\||&&|=|\*|\-|\+|/|!=|<=|>=|!|<|>)`, Operator, nil},
31 {`[(){}.;,:^\[\]]`, Punctuation, nil},
32 {`#[^\n]*`, Comment, nil},
33 {`"""`, LiteralString, Push("triple-double-quoted-string")},
34 {`"`, LiteralString, Push("single-double-quoted-string")},
35 {`'''`, LiteralString, Push("triple-single-quoted-string")},
36 {`'`, LiteralString, Push("single-single-quoted-string")},
37 },
38 "triple-double-quoted-string": {
39 {`"""`, LiteralString, Push("end-of-string")},
40 {`[^\\]+`, LiteralString, nil},
41 {`\\`, LiteralString, Push("string-escape")},
42 },
43 "single-double-quoted-string": {
44 {`"`, LiteralString, Push("end-of-string")},
45 {`[^"\\\n]+`, LiteralString, nil},
46 {`\\`, LiteralString, Push("string-escape")},
47 },
48 "triple-single-quoted-string": {
49 {`'''`, LiteralString, Push("end-of-string")},
50 {`[^\\]+`, LiteralString, nil},
51 {`\\`, LiteralStringEscape, Push("string-escape")},
52 },
53 "single-single-quoted-string": {
54 {`'`, LiteralString, Push("end-of-string")},
55 {`[^'\\\n]+`, LiteralString, nil},
56 {`\\`, LiteralString, Push("string-escape")},
57 },
58 "string-escape": {
59 {`u[0-9A-Fa-f]{4}`, LiteralStringEscape, Pop(1)},
60 {`U[0-9A-Fa-f]{8}`, LiteralStringEscape, Pop(1)},
61 {`.`, LiteralStringEscape, Pop(1)},
62 },
63 "end-of-string": {
64 {`(@)([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)`, ByGroups(Operator, NameFunction), Pop(2)},
65 {`\^\^`, Operator, Pop(2)},
66 Default(Pop(2)),
67 },
68 },
69))