diff --git a/vim-engine/src/main/antlr/RegexLexer.g4 b/vim-engine/src/main/antlr/RegexLexer.g4 index 44d2d6942..73e2a2579 100644 --- a/vim-engine/src/main/antlr/RegexLexer.g4 +++ b/vim-engine/src/main/antlr/RegexLexer.g4 @@ -20,7 +20,8 @@ tokens { POSITIVE_LIMITED_LOOKBEHIND, NEGATIVE_LIMITED_LOOKBEHIND, LAST_SUBSTITUTE, VISUAL, DECIMAL_CODE, OCTAL_CODE, HEXADECIMAL_CODE, UNICODE_CODE, WIDE_UNICODE_CODE, LINE, BEFORE_LINE, AFTER_LINE, COLUMN, BEFORE_COLUMN, AFTER_COLUMN, LINE_CURSOR, - BEFORE_LINE_CURSOR, AFTER_LINE_CURSOR + BEFORE_LINE_CURSOR, AFTER_LINE_CURSOR, COLUMN_CURSOR, BEFORE_COLUMN_CURSOR, + AFTER_COLUMN_CURSOR } @members { @@ -91,6 +92,9 @@ AFTER_LINE_CURSOR_MAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR); COLUMN_MAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN); BEFORE_COLUMN_MAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN); AFTER_COLUMN_MAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN); +COLUMN_CURSOR_MAGIC: '\\%.c' -> type(COLUMN_CURSOR); +BEFORE_COLUMN_CURSOR_MAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR); +AFTER_COLUMN_CURSOR_MAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR); // case-related tokens IGNORE_CASE_MAGIC: '\\c' { setIgnoreCase(); } -> skip; @@ -228,6 +232,9 @@ AFTER_LINE_CURSOR_NOMAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR); COLUMN_NOMAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN); BEFORE_COLUMN_NOMAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN); AFTER_COLUMN_NOMAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN); +COLUMN_CURSOR_NOMAGIC: '\\%.c' -> type(COLUMN_CURSOR); +BEFORE_COLUMN_CURSOR_NOMAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR); +AFTER_COLUMN_CURSOR_NOMAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR); // case-related tokens IGNORE_CASE_NOMAGIC: '\\c' { setIgnoreCase(); } -> skip; @@ -366,6 +373,9 @@ AFTER_LINE_CURSOR_VMAGIC: '%>.l' -> type(AFTER_LINE_CURSOR); COLUMN_VMAGIC: '%' [0-9]+ 'c' -> type(COLUMN); BEFORE_COLUMN_VMAGIC: '%<' [0-9]+ 'c' -> type(BEFORE_COLUMN); AFTER_COLUMN_VMAGIC: '%>' [0-9]+ 'c' -> type(AFTER_COLUMN); +COLUMN_CURSOR_VMAGIC: '%.c' -> type(COLUMN_CURSOR); +BEFORE_COLUMN_CURSOR_VMAGIC: '%<.c' -> type(BEFORE_COLUMN_CURSOR); +AFTER_COLUMN_CURSOR_VMAGIC: '%>.c' -> type(AFTER_COLUMN_CURSOR); // case-related tokens IGNORE_CASE_VMAGIC: '\\c' { setIgnoreCase(); } -> skip; @@ -503,6 +513,9 @@ AFTER_LINE_CURSOR_VNOMAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR); COLUMN_VNOMAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN); BEFORE_COLUMN_VNOMAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN); AFTER_COLUMN_VNOMAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN); +COLUMN_CURSOR_VNOMAGIC: '\\%.c' -> type(COLUMN_CURSOR); +BEFORE_COLUMN_CURSOR_VNOMAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR); +AFTER_COLUMN_CURSOR_VNOMAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR); // case-related tokens IGNORE_CASE_VNOMAGIC: '\\c' { setIgnoreCase(); } -> skip; diff --git a/vim-engine/src/main/antlr/RegexParser.g4 b/vim-engine/src/main/antlr/RegexParser.g4 index bea885424..db90c0c30 100644 --- a/vim-engine/src/main/antlr/RegexParser.g4 +++ b/vim-engine/src/main/antlr/RegexParser.g4 @@ -178,25 +178,28 @@ collection_char_class_expression : ALPHA_CLASS #AlphaClass * When using zero-width tokens, no characters are * included in the match. */ -zero_width : CURSOR #Cursor - | VISUAL #Visual - | START_MATCH #StartMatch - | END_MATCH #EndMatch - | START_OF_FILE #StartOfFile - | END_OF_FILE #EndOfFile - | START_OF_LINE #StartOfLine - | END_OF_LINE #EndOfLine - | START_OF_WORD #StartOfWord - | END_OF_WORD #EndOfWord - | LINE #Line - | BEFORE_LINE #BeforeLine - | AFTER_LINE #AfterLine - | LINE_CURSOR #LineCursor - | BEFORE_LINE_CURSOR #BeforeLineCursor - | AFTER_LINE_CURSOR #AfterLineCursor - | COLUMN #Column - | BEFORE_COLUMN #BeforeColumn - | AFTER_COLUMN #AfterColumn +zero_width : CURSOR #Cursor + | VISUAL #Visual + | START_MATCH #StartMatch + | END_MATCH #EndMatch + | START_OF_FILE #StartOfFile + | END_OF_FILE #EndOfFile + | START_OF_LINE #StartOfLine + | END_OF_LINE #EndOfLine + | START_OF_WORD #StartOfWord + | END_OF_WORD #EndOfWord + | LINE #Line + | BEFORE_LINE #BeforeLine + | AFTER_LINE #AfterLine + | LINE_CURSOR #LineCursor + | BEFORE_LINE_CURSOR #BeforeLineCursor + | AFTER_LINE_CURSOR #AfterLineCursor + | COLUMN #Column + | BEFORE_COLUMN #BeforeColumn + | AFTER_COLUMN #AfterColumn + | COLUMN_CURSOR #ColumnCursor + | BEFORE_COLUMN_CURSOR #BeforeColumnCursor + | AFTER_COLUMN_CURSOR #AfterColumnCursor ; /**