Skip to content

Commit

Permalink
Merge pull request rubberduck-vba#1074 from autoboosh/dateliteral
Browse files Browse the repository at this point in the history
allow date tokens as per VBA specification 3.3.3 (fixes rubberduck-vba#1073)
  • Loading branch information
retailcoder committed Feb 11, 2016
2 parents 7cd2b28 + 6f38e2c commit 6637492
Show file tree
Hide file tree
Showing 7 changed files with 28,957 additions and 26,348 deletions.
27 changes: 19 additions & 8 deletions Rubberduck.Parsing/Grammar/VBA.g4
Original file line number Diff line number Diff line change
Expand Up @@ -906,14 +906,25 @@ L_SQUARE_BRACKET : '[';
R_SQUARE_BRACKET : ']';


// literals
STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
DATELITERAL : '#' DIGIT+ '/' DIGIT+ '/' DIGIT+ '#';
OCTLITERAL : '&O' [0-8]+ '&'?;
HEXLITERAL : '&H' [0-9A-F]+ '&'?;
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
// literals
STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
OCTLITERAL : '&O' [0-8]+ '&'?;
HEXLITERAL : '&H' [0-9A-F]+ '&'?;
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
DATELITERAL : '#' DATEORTIME '#';
fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
fragment DATESEPARATOR : WS? [/,-]? WS?;
fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
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;
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;
fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
fragment TIMESEPARATOR : WS? (':' | '.') WS?;
fragment AMPM : WS? (A M | P M | A | P);
// whitespace, line breaks, comments, ...
LINE_CONTINUATION : [ \t]+ '_' '\r'? '\n' -> skip;
Expand Down
4,716 changes: 2,359 additions & 2,357 deletions Rubberduck.Parsing/Grammar/VBABaseListener.cs

Large diffs are not rendered by default.

3,972 changes: 1,987 additions & 1,985 deletions Rubberduck.Parsing/Grammar/VBABaseVisitor.cs

Large diffs are not rendered by default.

2,144 changes: 1,130 additions & 1,014 deletions Rubberduck.Parsing/Grammar/VBALexer.cs

Large diffs are not rendered by default.

0 comments on commit 6637492

Please sign in to comment.