1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-05-28 08:34:02 +02:00

parsing positive lookahead

This commit is contained in:
Emanuel Gestosa 2023-08-16 16:11:36 +01:00 committed by lippfi
parent 189acb73f5
commit 052fd7162f
2 changed files with 24 additions and 10 deletions
vim-engine/src/main/antlr

View File

@ -15,7 +15,8 @@ tokens {
CLASS_NOT_HEX_NL, CLASS_OCTAL_NL, CLASS_NOT_OCTAL_NL, CLASS_WORD_NL, CLASS_NOT_WORD_NL,
CLASS_HEADWORD_NL, CLASS_NOT_HEADWORD_NL, CLASS_ALPHA_NL, CLASS_NOT_ALPHA_NL, CLASS_LCASE_NL,
CLASS_NOT_LCASE_NL, CLASS_UCASE_NL, CLASS_NOT_UCASE_NL, START_OF_FILE, END_OF_FILE,
CARET, DOLLAR, START_OF_LINE, END_OF_LINE, ATOMIC, START_OF_WORD, END_OF_WORD
CARET, DOLLAR, START_OF_LINE, END_OF_LINE, ATOMIC, START_OF_WORD, END_OF_WORD,
POSITIVE_LOOKAHEAD
}
@members {
@ -39,11 +40,14 @@ LEFT_PAREN_NOCAPTURE_MAGIC: '\\%(' -> type(LEFT_PAREN_NOCAPTURE);
RIGHT_PAREN_MAGIC: '\\)' -> type(RIGHT_PAREN);
DOT_MAGIC: '.' -> type(DOT);
DOTNL_MAGIC: '\\_.' -> type(DOTNL);
BACKREFERENCE_MAGIC: '\\' [0-9] -> type(BACKREFERENCE);
// multi
STAR_MAGIC: '*' -> type(STAR);
PLUS_MAGIC: '\\+' -> type(PLUS);
OPTIONAL_MAGIC: ('\\=' | '\\?') -> type(OPTIONAL);
ATOMIC_MAGIC: '\\@>' -> type(ATOMIC);
BACKREFERENCE_MAGIC: '\\' [0-9] -> type(BACKREFERENCE);
POSITIVE_LOOKAHEAD_MAGIC: '\\@=' -> type(POSITIVE_LOOKAHEAD);
RANGE_START_MAGIC: '\\{' -> pushMode(INSIDE_RANGE), type(RANGE_START);
RANGE_START_LAZY_MAGIC: '\\{-' -> pushMode(INSIDE_RANGE), type(RANGE_START_LAZY);
@ -152,11 +156,14 @@ LEFT_PAREN_NOCAPTURE_NOMAGIC: '\\%(' -> type(LEFT_PAREN_NOCAPTURE);
RIGHT_PAREN_NOMAGIC: '\\)' -> type(RIGHT_PAREN);
DOT_NOMAGIC: '\\.' -> type(DOT);
DOTNL_NOMAGIC: '\\_.' -> type(DOTNL);
BACKREFERENCE_NOMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
// multi
STAR_NOMAGIC: '\\*' -> type(STAR);
PLUS_NOMAGIC: '\\+' -> type(PLUS);
OPTIONAL_NOMAGIC: ('\\=' | '\\?') -> type(OPTIONAL);
ATOMIC_NOMAGIC: '\\@>' -> type(ATOMIC);
BACKREFERENCE_NOMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
POSITIVE_LOOKAHEAD_NOMAGIC: '\\@=' -> type(POSITIVE_LOOKAHEAD);
RANGE_START_NOMAGIC: '\\{' -> pushMode(INSIDE_RANGE), type(RANGE_START);
RANGE_START_LAZY_NOMAGIC: '\\{-' -> pushMode(INSIDE_RANGE), type(RANGE_START_LAZY);
@ -266,11 +273,14 @@ LEFT_PAREN_NOCAPTURE_VMAGIC: '%(' -> type(LEFT_PAREN_NOCAPTURE);
RIGHT_PAREN_VMAGIC: ')' -> type(RIGHT_PAREN);
DOT_VMAGIC: '.' -> type(DOT);
DOTNL_VMAGIC: '\\_.' -> type(DOTNL);
BACKREFERENCE_VMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
// multi
STAR_VMAGIC: '*' -> type(STAR);
PLUS_VMAGIC: '+' -> type(PLUS);
OPTIONAL_VMAGIC: ('=' | '?') -> type(OPTIONAL);
ATOMIC_VMAGIC: '@>' -> type(ATOMIC);
BACKREFERENCE_VMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
POSITIVE_LOOKAHEAD_VMAGIC: '@=' -> type(POSITIVE_LOOKAHEAD);
RANGE_START_VMAGIC: '{' -> pushMode(INSIDE_RANGE), type(RANGE_START);
RANGE_START_LAZY_VMAGIC: '{-' -> pushMode(INSIDE_RANGE), type(RANGE_START_LAZY);
@ -379,11 +389,14 @@ LEFT_PAREN_NOCAPTURE_VNOMAGIC: '\\%(' -> type(LEFT_PAREN_NOCAPTURE);
RIGHT_PAREN_VNOMAGIC: '\\)' -> type(RIGHT_PAREN);
DOT_VNOMAGIC: '\\.' -> type(DOT);
DOTNL_VNOMAGIC: '\\_.' -> type(DOTNL);
BACKREFERENCE_VNOMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
// multi
STAR_VNOMAGIC: '\\*' -> type(STAR);
PLUS_VNOMAGIC: '\\+' -> type(PLUS);
OPTIONAL_VNOMAGIC: ('\\=' | '\\?') -> type(OPTIONAL);
ATOMIC_VNOMAGIC: '\\@>' -> type(ATOMIC);
BACKREFERENCE_VNOMAGIC: '\\' [0-9] -> type(BACKREFERENCE);
POSITIVE_LOOKAHEAD_VNOMAGIC: '\\@=' -> type(POSITIVE_LOOKAHEAD);
RANGE_START_VNOMAGIC: '\\{' -> pushMode(INSIDE_RANGE), type(RANGE_START);
RANGE_START_LAZY_VNOMAGIC: '\\{-' -> pushMode(INSIDE_RANGE), type(RANGE_START_LAZY);

View File

@ -56,11 +56,12 @@ atom : ordinary_atom #OrdinaryAtom
* "\?" or "\=" for zero or one times, or a range for a more customizable
* number of times.
*/
multi : STAR #ZeroOrMore
| PLUS #OneOrMore
| OPTIONAL #ZeroOrOne
| range #RangeQuantifier
| ATOMIC #Atomic
multi : STAR #ZeroOrMore
| PLUS #OneOrMore
| OPTIONAL #ZeroOrOne
| range #RangeQuantifier
| ATOMIC #Atomic
| POSITIVE_LOOKAHEAD #PositiveLookahead
;
/**