Skip to content

Commit 13836e9

Browse files
author
Andrin Meier
committed
move preprocessor grammar to shared vbalexer (#1250)
1 parent 84c9654 commit 13836e9

27 files changed

+8241
-8742
lines changed

Rubberduck.Parsing/Grammar/VBALexer.cs

Lines changed: 1076 additions & 874 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Grammar/VBALexer.g4

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ AT : '@';
2727
PERCENT : '%';
2828
DOLLAR : '$';
2929
AMPERSAND : '&';
30-
EXP : '^';
3130
ACCESS : A C C E S S;
3231
ADDRESSOF : A D D R E S S O F;
3332
ALIAS : A L I A S;
@@ -114,7 +113,6 @@ LOAD : L O A D;
114113
LOCK : L O C K;
115114
LONG : L O N G;
116115
LOOP : L O O P;
117-
LEN : L E N;
118116
LET : L E T;
119117
LIB : L I B;
120118
LIKE : L I K E;
@@ -216,6 +214,11 @@ NEQ : '<>';
216214
PLUS : '+';
217215
POW : '^';
218216
RPAREN : ')';
217+
HASHCONST : WS* HASH CONST;
218+
HASHIF : WS* HASH I F;
219+
HASHELSEIF : WS* HASH E L S E I F;
220+
HASHELSE : WS* HASH E L S E;
221+
HASHENDIF : WS* HASH E N D WS* I F;
219222
L_SQUARE_BRACKET : '[';
220223
R_SQUARE_BRACKET : ']';
221224
STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
@@ -224,15 +227,48 @@ HEXLITERAL : '&H' [0-9A-F]+ '&'?;
224227
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
225228
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
226229
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
227-
DATELITERAL : '#' ~'#'+ '#';
228-
NEWLINE : [\r\n\u2028\u2029]+;
230+
DATELITERAL : '#' DATEORTIME '#';
231+
fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
232+
fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
233+
fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
234+
fragment DATESEPARATOR : WS? [/,-]? WS?;
235+
fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
236+
fragment ENGLISHMONTHNAME : JANUARY | FEBRUARY | MARCH | APRIL | MAY | JUNE | JULY | AUGUST | SEPTEMBER | OCTOBER | NOVEMBER | DECEMBER;
237+
fragment ENGLISHMONTHABBREVIATION : JAN | FEB | MAR | APR | JUN | JUL | AUG | SEP | OCT | NOV | DEC;
238+
fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
239+
fragment TIMESEPARATOR : WS? (':' | '.') WS?;
240+
fragment AMPM : WS? (A M | P M | A | P);
241+
fragment JANUARY : J A N U A R Y;
242+
fragment FEBRUARY : F E B R U A R Y;
243+
fragment MARCH : M A R C H;
244+
fragment APRIL : A P R I L;
245+
fragment MAY : M A Y;
246+
fragment JUNE : J U N E;
247+
fragment JULY : J U L Y;
248+
fragment AUGUST : A U G U S T;
249+
fragment SEPTEMBER : S E P T E M B E R;
250+
fragment OCTOBER : O C T O B E R;
251+
fragment NOVEMBER : N O V E M B E R;
252+
fragment DECEMBER : D E C E M B E R;
253+
fragment JAN : J A N;
254+
fragment FEB : F E B;
255+
fragment MAR: M A R;
256+
fragment APR : A P R;
257+
fragment JUN : J U N;
258+
fragment JUL: J U L;
259+
fragment AUG : A U G;
260+
fragment SEP : S E P;
261+
fragment OCT : O C T;
262+
fragment NOV : N O V;
263+
fragment DEC : D E C;
264+
NEWLINE : '\r' '\n' | [\r\n\u2028\u2029];
229265
REMCOMMENT : COLON? REM WS (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*;
230266
COMMENT : SINGLEQUOTE (LINE_CONTINUATION | ~[\r\n\u2028\u2029])*;
231267
SINGLEQUOTE : '\'';
232268
UNDERSCORE : '_';
233-
WS : ([ \t] | LINE_CONTINUATION)+;
234-
IDENTIFIER : (~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; ])+ | L_SQUARE_BRACKET (~[!\]\r\n])+ R_SQUARE_BRACKET;
235-
fragment LINE_CONTINUATION : [ \t]+ UNDERSCORE '\r'? '\n';
269+
WS : [ \t];
270+
IDENTIFIER : ~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; 0-9-/\\] ~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; ]* | L_SQUARE_BRACKET (~[!\]\r\n])+ R_SQUARE_BRACKET;
271+
LINE_CONTINUATION : [ \t]* UNDERSCORE [ \t]* '\r'? '\n';
236272
fragment LETTER : [a-zA-Z_äöüÄÖÜ];
237273
fragment DIGIT : [0-9];
238274
fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];

0 commit comments

Comments
 (0)