mirror of
https://github.com/sharkdp/bat
synced 2024-11-30 15:49:16 +00:00
98 lines
2.8 KiB
Text
98 lines
2.8 KiB
Text
|
%YAML 1.2
|
||
|
---
|
||
|
# http://www.sublimetext.com/docs/3/syntax.html
|
||
|
name: Rego
|
||
|
file_extensions:
|
||
|
- rego
|
||
|
scope: source.rego
|
||
|
contexts:
|
||
|
main:
|
||
|
- include: comment
|
||
|
- include: keyword
|
||
|
- include: operator
|
||
|
- include: head
|
||
|
- include: term
|
||
|
comment:
|
||
|
- match: (#).*$\n?
|
||
|
scope: comment.line.number-sign.rego
|
||
|
captures:
|
||
|
1: punctuation.definition.comment.rego
|
||
|
call:
|
||
|
- match: '([a-zA-Z_][a-zA-Z0-9_]*)\('
|
||
|
scope: meta.function-call.rego
|
||
|
captures:
|
||
|
1: support.function.any-method.rego
|
||
|
constant:
|
||
|
- match: \b(?:true|false|null)\b
|
||
|
scope: constant.language.rego
|
||
|
head:
|
||
|
- match: "^([[:alpha:]_][[:alnum:]_]*)"
|
||
|
captures:
|
||
|
1: entity.name.function.declaration
|
||
|
push:
|
||
|
- meta_scope: meta.function.rego
|
||
|
- match: '(=|{|\n)'
|
||
|
pop: true
|
||
|
- include: term
|
||
|
keyword:
|
||
|
- match: (^|\s+)(?:(default|not|package|import|as|with|else|some))\s+
|
||
|
scope: keyword.other.rego
|
||
|
number:
|
||
|
- match: |-
|
||
|
(?x: # turn on extended mode
|
||
|
-? # an optional minus
|
||
|
(?:
|
||
|
0 # a zero
|
||
|
| # ...or...
|
||
|
[1-9] # a 1-9 character
|
||
|
\d* # followed by zero or more digits
|
||
|
)
|
||
|
(?:
|
||
|
(?:
|
||
|
\. # a period
|
||
|
\d+ # followed by one or more digits
|
||
|
)?
|
||
|
(?:
|
||
|
[eE] # an e character
|
||
|
[+-]? # followed by an option +/-
|
||
|
\d+ # followed by one or more digits
|
||
|
)? # make exponent optional
|
||
|
)? # make decimal portion optional
|
||
|
)
|
||
|
scope: constant.numeric.rego
|
||
|
operator:
|
||
|
- match: \=|\!\=|>|<|<\=|>\=|\+|-|\*|%|/|\||&|:\=
|
||
|
scope: keyword.operator.comparison.rego
|
||
|
string:
|
||
|
- match: '"'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.begin.rego
|
||
|
push:
|
||
|
- meta_scope: string.quoted.double.rego
|
||
|
- match: '"'
|
||
|
captures:
|
||
|
0: punctuation.definition.string.end.rego
|
||
|
pop: true
|
||
|
- match: |-
|
||
|
(?x: # turn on extended mode
|
||
|
\\ # a literal backslash
|
||
|
(?: # ...followed by...
|
||
|
["\\/bfnrt] # one of these characters
|
||
|
| # ...or...
|
||
|
u # a u
|
||
|
[0-9a-fA-F]{4} # and four hex digits
|
||
|
)
|
||
|
)
|
||
|
scope: constant.character.escape.rego
|
||
|
- match: \\.
|
||
|
scope: invalid.illegal.unrecognized-string-escape.rego
|
||
|
term:
|
||
|
- include: constant
|
||
|
- include: string
|
||
|
- include: number
|
||
|
- include: call
|
||
|
- include: variable
|
||
|
variable:
|
||
|
- match: '\b[[:alpha:]_][[:alnum:]_]*\b'
|
||
|
scope: meta.identifier.rego
|