-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRegular Expressions (imba).sublime-syntax
88 lines (88 loc) · 2.83 KB
/
Regular Expressions (imba).sublime-syntax
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
%YAML 1.2
---
name: Regular Expressions (Imba)
scope: source.regexp.imba
hidden: true
contexts:
main:
- include: anchor
- include: backref
- include: quantifier
- include: operator
- include: group-assertion
- include: group-definition
- include: character-class
- include: character-class-definition
anchor:
- match: '\\[bB]|\^|\$'
scope: keyword.control.anchor.regexp
backref:
- match: '\\[1-9][0-9]*'
scope: keyword.other.back-reference.regexp
character-class:
- match: '\\[wWsSdD]|\.'
scope: constant.other.character-class.escape.backslash.regexp
- match: '\\([trnvf0\\]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.)'
scope: constant.character.escape.backslash.regexp
character-class-definition:
- match: '(\[)(\^)?'
captures:
1: punctuation.definition.character-class.regexp
2: keyword.operator.negation.regexp
push:
- meta_scope: constant.other.character-class.set.regexp
- match: '(\])'
captures:
1: punctuation.definition.character-class.regexp
pop: true
- include: character-class
- match: |-
(?x)
(
(\\[wWsSdD]|\.)|
(\\([trnvf0]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.))
)\-
(
(\\[wWsSdD]|\.)|
(\\([trnvf0]|c[A-Z]|x[\da-fA-F]{2}|u[\da-fA-F]{4}|.))
)
scope: constant.other.character-class.range.regexp
captures:
2: constant.other.character-class.escape.backslash.regexp
3: constant.character.escape.backslash.regexp
5: constant.other.character-class.escape.backslash.regexp
6: constant.character.escape.backslash.regexp
group-assertion:
- match: (\()((\?=)|(\?!))
captures:
1: punctuation.definition.group.regexp
2: punctuation.definition.group.assertion.regexp
3: meta.assertion.look-ahead.regexp
4: meta.assertion.negative-look-ahead.regexp
push:
- meta_scope: meta.group.assertion.regexp
- match: (\))
captures:
1: punctuation.definition.group.regexp
pop: true
- include: main
group-definition:
- match: (\()((\?:))?
captures:
1: punctuation.definition.group.regexp
3: punctuation.definition.group.capture.regexp
5: punctuation.definition.group.capture.regexp
6: punctuation.definition.group.no-capture.regexp
push:
- meta_scope: meta.group.regexp
- match: (\))
captures:
1: punctuation.definition.group.regexp
pop: true
- include: main
operator:
- match: \|
scope: keyword.operator.or.regexp
quantifier:
- match: '(\?|\*\??|\+\??)|\{(\d+,\d+|\d+,|\d+)\}'
scope: keyword.operator.quantifier.regexp