-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregex.g4
60 lines (48 loc) · 1.68 KB
/
regex.g4
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
grammar regex;
main: regex EOF;
regex: expr* alternative*;
alternative: '|' expr*;
expr: subexpr quantifier?;
subexpr:
regexGroup #groupPattern
| atomicChar #atomicPattern
| ESCAPED_RESERVED_CHAR #escapedReservedAtomicPattern
| CHARACTER_CLASS #characterClass
| complexCharacterClass #complexClass
| DOLLAR #dollarAnchor
| CARET #caretAnchor
| DOT #dotPattern;
regexGroup: OPEN_PAR (QUESTION_MARK ((LOWER_THAN name+=CHAR+ GREATER_THAN) | nonCapture=COLON))? regex CLOSE_PAR;
complexCharacterClass: OPEN_BRACKET negated=CARET? complexCCPiece* CLOSE_BRACKET;
complexCCPiece: allowedCharInCharacterClass (DASH allowedCharInCharacterClass)?;
allowedCharInCharacterClass:
CHAR | DASH | OPEN_BRACKET | OPEN_PAR | CLOSE_PAR | ASTERISK | PLUS | DOT | QUESTION_MARK | ESCAPED_RESERVED_CHAR | GREATER_THAN
| LOWER_THAN | COLON | CARET | DOLLAR;
atomicChar:
CHAR | CLOSE_BRACKET | DASH | GREATER_THAN | LOWER_THAN | COLON;
quantifier:
ASTERISK #asteriskQuantifier
| PLUS #plusQuantifier
| QUESTION_MARK #questionQuantifier
| ASTERISK QUESTION_MARK #lazyAsteriskQuantifier
| PLUS QUESTION_MARK #lazyPlusQuantifier
| QUESTION_MARK QUESTION_MARK #lazyQuestionQuantifier;
BACKSLASH : '\\';
ESCAPED_RESERVED_CHAR: BACKSLASH (BACKSLASH | OPEN_PAR | CLOSE_PAR | ASTERISK | PLUS | DOT | OPEN_BRACKET | CLOSE_BRACKET | GREATER_THAN
| LOWER_THAN | COLON | CARET | DOLLAR);
CHARACTER_CLASS: BACKSLASH ( 'd' | 'D' | 'w' | 'W' | 's' | 'S');
OPEN_PAR: '(';
CLOSE_PAR: ')';
ASTERISK: '*';
PLUS: '+';
DOT: '.';
QUESTION_MARK: '?';
OPEN_BRACKET: '[';
CLOSE_BRACKET: ']';
DASH: '-';
GREATER_THAN: '>';
LOWER_THAN: '<';
COLON: ':';
CARET: '^';
DOLLAR: '$';
CHAR: .;