Skip to content

Commit 6d75457

Browse files
author
Andrin Meier
committed
fix date literal bugs + add more date literal tests (#1132)
Changes: 1. Case handled incorrectly when L/M is month name and other L/M is year 2. JULY was missing 3. Problem with creating single letter tokens 4. Introduced dateValueNumber in order to make null checks instead of .Count > 0 possible for testing whether the date part is a number or name
1 parent 90915bd commit 6d75457

19 files changed

+7563
-6969
lines changed

Rubberduck.Parsing/Grammar/VBA.g4

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -845,12 +845,36 @@ fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DA
845845
fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
846846
fragment DATESEPARATOR : WS? [/,-]? WS?;
847847
fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
848-
fragment ENGLISHMONTHNAME : J A N U A R Y | F E B R U A R Y | M A R C H | A P R I L | M A Y | J U N E | A U G U S T | S E P T E M B E R | O C T O B E R | N O V E M B E R | D E C E M B E R;
849-
fragment ENGLISHMONTHABBREVIATION : J A N | F E B | M A R | A P R | J U N | J U L | A U G | S E P | O C T | N O V | D E C;
848+
fragment ENGLISHMONTHNAME : JANUARY | FEBRUARY | MARCH | APRIL | MAY | JUNE | JULY | AUGUST | SEPTEMBER | OCTOBER | NOVEMBER | DECEMBER;
849+
fragment ENGLISHMONTHABBREVIATION : JAN | FEB | MAR | APR | JUN | JUL | AUG | SEP | OCT | NOV | DEC;
850850
fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
851851
fragment TIMESEPARATOR : WS? (':' | '.') WS?;
852852
fragment AMPM : WS? (A M | P M | A | P);
853853
854+
JANUARY : J A N U A R Y;
855+
FEBRUARY : F E B R U A R Y;
856+
MARCH : M A R C H;
857+
APRIL : A P R I L;
858+
MAY : M A Y;
859+
JUNE : J U N E;
860+
JULY : J U L Y;
861+
AUGUST : A U G U S T;
862+
SEPTEMBER : S E P T E M B E R;
863+
OCTOBER : O C T O B E R;
864+
NOVEMBER : N O V E M B E R;
865+
DECEMBER : D E C E M B E R;
866+
JAN : J A N;
867+
FEB : F E B;
868+
MAR: M A R;
869+
APR : A P R;
870+
JUN : J U N;
871+
JUL: J U L;
872+
AUG : A U G;
873+
SEP : S E P;
874+
OCT : O C T;
875+
NOV : N O V;
876+
DEC : D E C;
877+
854878
// whitespace, line breaks, comments, ...
855879
LINE_CONTINUATION : [ \t]+ UNDERSCORE '\r'? '\n' -> skip;
856880
NEWLINE : [\r\n\u2028\u2029]+;

Rubberduck.Parsing/Grammar/VBALexer.cs

Lines changed: 1002 additions & 941 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Grammar/VBAParser.cs

Lines changed: 359 additions & 354 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Preprocessing/VBAConditionalCompilation.g4

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,35 @@ fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DA
7474
fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
7575
fragment DATESEPARATOR : WS? [/,-]? WS?;
7676
fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
77-
fragment ENGLISHMONTHNAME : J A N U A R Y | F E B R U A R Y | M A R C H | A P R I L | M A Y | J U N E | A U G U S T | S E P T E M B E R | O C T O B E R | N O V E M B E R | D E C E M B E R;
78-
fragment ENGLISHMONTHABBREVIATION : J A N | F E B | M A R | A P R | J U N | J U L | A U G | S E P | O C T | N O V | D E C;
77+
fragment ENGLISHMONTHNAME : JANUARY | FEBRUARY | MARCH | APRIL | MAY | JUNE | JULY | AUGUST | SEPTEMBER | OCTOBER | NOVEMBER | DECEMBER;
78+
fragment ENGLISHMONTHABBREVIATION : JAN | FEB | MAR | APR | JUN | JUL | AUG | SEP | OCT | NOV | DEC;
7979
fragment TIMEVALUE : (DIGIT+ AMPM) | (DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?);
8080
fragment TIMESEPARATOR : WS? (':' | '.') WS?;
8181
fragment AMPM : WS? (A M | P M | A | P);
8282
83+
JANUARY : J A N U A R Y;
84+
FEBRUARY : F E B R U A R Y;
85+
MARCH : M A R C H;
86+
APRIL : A P R I L;
87+
MAY : M A Y;
88+
JUNE : J U N E;
89+
JULY : J U L Y;
90+
AUGUST : A U G U S T;
91+
SEPTEMBER : S E P T E M B E R;
92+
OCTOBER : O C T O B E R;
93+
NOVEMBER : N O V E M B E R;
94+
DECEMBER : D E C E M B E R;
95+
JAN : J A N;
96+
FEB : F E B;
97+
MAR: M A R;
98+
APR : A P R;
99+
JUN : J U N;
100+
JUL: J U L;
101+
AUG : A U G;
102+
SEP : S E P;
103+
OCT : O C T;
104+
NOV : N O V;
105+
DEC : D E C;
83106
NOT : N O T;
84107
TRUE : T R U E;
85108
FALSE : F A L S E;

Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationBaseListener.cs

Lines changed: 281 additions & 279 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationBaseVisitor.cs

Lines changed: 227 additions & 225 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationLexer.cs

Lines changed: 479 additions & 438 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationListener.cs

Lines changed: 224 additions & 222 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)