Source file tm_grammar_opam.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
let lang_id = "opam"
let json = {json|{
"scopeName": "source.ocaml.opam",
"fileTypes": ["opam"],
"patterns": [
{ "include": "#comments" },
{ "include": "#fields" },
{ "include": "#values" }
],
"repository": {
"comments": {
"patterns": [
{
"comment": "block comment",
"name": "comment.block.opam",
"begin": "\\(\\*",
"end": "\\*\\)"
},
{
"comment": "line comment",
"name": "comment.line.opam",
"begin": "#",
"end": "$"
}
]
},
"fields": {
"comment": "labeled field",
"match": "^([[:word:]-]*[[:alpha:]][[:word:]-]*)(:)",
"captures": {
"1": { "name": "entity.name.tag.opam" },
"2": { "name": "keyword.operator.opam" }
}
},
"values": {
"patterns": [
{
"comment": "boolean literal",
"name": "constant.language.opam",
"match": "\\b(true|false)\\b"
},
{
"comment": "integer literal",
"name": "constant.numeric.decimal.opam",
"match": "(\\b|\\-?)[[:digit:]]+\\b"
},
{
"comment": "double-quote string literal",
"name": "string.quoted.double.opam",
"begin": "\"",
"end": "\"",
"patterns": [{ "include": "#string-elements" }]
},
{
"comment": "triple-double-quote string literal",
"name": "string.quoted.triple-double.opam",
"begin": "\"\"\"",
"end": "\"\"\"",
"patterns": [{ "include": "#string-elements" }]
},
{
"comment": "operator",
"name": "keyword.operator.opam",
"match": "[!=<>\\|&?:]+"
},
{
"comment": "identifier",
"match": "\\b([[:word:]+-]+)\\b",
"name": "variable.parameter.opam"
}
]
},
"string-elements": {
"patterns": [
{
"comment": "escaped backslash",
"name": "constant.character.escape.opam",
"match": "\\\\\\\\"
},
{
"comment": "escaped quote or whitespace",
"name": "constant.character.escape.opam",
"match": "\\\\[\"ntbr\\n]"
},
{
"comment": "character from decimal ASCII code",
"name": "constant.character.escape.opam",
"match": "\\\\[[:digit:]]{3}"
},
{
"comment": "character from hexadecimal ASCII code",
"name": "constant.character.escape.opam",
"match": "\\\\x[[:xdigit:]]{2}"
},
{
"comment": "variable interpolation",
"name": "constant.variable.opam",
"begin": "%\\{",
"end": "}\\%"
},
{
"comment": "unknown escape sequence",
"name": "invalid.illegal.unknown-escape.opam",
"match": "\\\\."
}
]
}
}
}|json}