Skip to content

Commit 1653b55

Browse files
committed
Merge pull request #31 from rubberduck-vba/next
sync with merged PR's in main repo
2 parents 105d146 + f166f79 commit 1653b55

File tree

8 files changed

+28963
-26352
lines changed

8 files changed

+28963
-26352
lines changed

RetailCoder.VBE/UI/CodeInspections/InspectionResultsViewModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ private void ExecuteQuickFixCommand(object parameter)
203203

204204
private bool CanExecuteQuickFixCommand(object parameter)
205205
{
206-
return !IsBusy && SelectedItem is IInspection;
206+
var quickFix = parameter as CodeInspectionQuickFix;
207+
return !IsBusy && quickFix != null;
207208
}
208209

209210
private bool _canExecuteQuickFixInModule;

Rubberduck.Parsing/Grammar/VBA.g4

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
* - fixed precompiler directives, which can now be nested. they still can't interfere with other blocks though.
7575
* - optional parameters can be a valueStmt.
7676
* - added support for Octal and Currency literals.
77+
* - implemented proper specs for DATELITERAL.
7778
*
7879
*======================================================================================
7980
*
@@ -906,14 +907,25 @@ L_SQUARE_BRACKET : '[';
906907
R_SQUARE_BRACKET : ']';
907908

908909

909-
// literals
910-
STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
911-
DATELITERAL : '#' DIGIT+ '/' DIGIT+ '/' DIGIT+ '#';
912-
OCTLITERAL : '&O' [0-8]+ '&'?;
913-
HEXLITERAL : '&H' [0-9A-F]+ '&'?;
914-
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
915-
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
916-
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
910+
// literals
911+
STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
912+
OCTLITERAL : '&O' [0-8]+ '&'?;
913+
HEXLITERAL : '&H' [0-9A-F]+ '&'?;
914+
SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
915+
INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
916+
DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
917+
918+
DATELITERAL : '#' DATEORTIME '#';
919+
fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
920+
fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
921+
fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
922+
fragment DATESEPARATOR : WS? [/,-]? WS?;
923+
fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
924+
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;
925+
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;
926+
fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
927+
fragment TIMESEPARATOR : WS? (':' | '.') WS?;
928+
fragment AMPM : WS? (A M | P M | A | P);
917929
918930
// whitespace, line breaks, comments, ...
919931
LINE_CONTINUATION : [ \t]+ '_' '\r'? '\n' -> skip;
@@ -926,9 +938,9 @@ IDENTIFIER : (~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; ])+ | L_SQUARE_BRACKET (~[!\]\
926938
927939
928940
// letters
929-
fragment LETTER : [a-zA-Z_äöüÄÖÜ];
941+
fragment LETTER : [a-zA-Z_äöüÄÖÜ];
930942
fragment DIGIT : [0-9];
931-
fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
943+
fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
932944
933945
// case insensitive chars
934946
fragment A:('a'|'A');
@@ -956,4 +968,4 @@ fragment V:('v'|'V');
956968
fragment W:('w'|'W');
957969
fragment X:('x'|'X');
958970
fragment Y:('y'|'Y');
959-
fragment Z:('z'|'Z');
971+
fragment Z:('z'|'Z');

0 commit comments

Comments
 (0)