Skip to content

Commit bc2ca8b

Browse files
authored
Merge pull request #2516 from comintern/next
Grammer tweak for idiotic Case syntax.
2 parents 34c699e + 303f87c commit bc2ca8b

File tree

6 files changed

+73
-73
lines changed

6 files changed

+73
-73
lines changed

Rubberduck.Parsing/Grammar/VBAParser.cs

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// </auto-generated>
99
//------------------------------------------------------------------------------
1010

11-
// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
11+
// Generated from C:\Work\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
1212

1313
// Unreachable code detected
1414
#pragma warning disable 0162
@@ -10715,10 +10715,10 @@ public CaseElseClauseContext caseElseClause() {
1071510715
}
1071610716

1071710717
public partial class RangeClauseContext : ParserRuleContext {
10718+
public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); }
1071810719
public WhiteSpaceContext whiteSpace(int i) {
1071910720
return GetRuleContext<WhiteSpaceContext>(i);
1072010721
}
10721-
public ITerminalNode IS() { return GetToken(VBAParser.IS, 0); }
1072210722
public SelectEndValueContext selectEndValue() {
1072310723
return GetRuleContext<SelectEndValueContext>(0);
1072410724
}
@@ -10766,50 +10766,50 @@ public RangeClauseContext rangeClause() {
1076610766
case 1:
1076710767
EnterOuterAlt(_localctx, 1);
1076810768
{
10769-
State = 1826; expression(0);
10770-
}
10771-
break;
10772-
10773-
case 2:
10774-
EnterOuterAlt(_localctx, 2);
10775-
{
10776-
State = 1827; selectStartValue();
10777-
State = 1828; whiteSpace();
10778-
State = 1829; Match(TO);
10779-
State = 1830; whiteSpace();
10780-
State = 1831; selectEndValue();
10781-
}
10782-
break;
10783-
10784-
case 3:
10785-
EnterOuterAlt(_localctx, 3);
10786-
{
10787-
State = 1837;
10769+
State = 1830;
1078810770
switch ( Interpreter.AdaptivePredict(_input,225,_ctx) ) {
1078910771
case 1:
1079010772
{
10791-
State = 1833; Match(IS);
10792-
State = 1835;
10773+
State = 1826; Match(IS);
10774+
State = 1828;
1079310775
_la = _input.La(1);
1079410776
if (_la==WS || _la==LINE_CONTINUATION) {
1079510777
{
10796-
State = 1834; whiteSpace();
10778+
State = 1827; whiteSpace();
1079710779
}
1079810780
}
1079910781

1080010782
}
1080110783
break;
1080210784
}
10803-
State = 1839; comparisonOperator();
10804-
State = 1841;
10785+
State = 1832; comparisonOperator();
10786+
State = 1834;
1080510787
_la = _input.La(1);
1080610788
if (_la==WS || _la==LINE_CONTINUATION) {
1080710789
{
10808-
State = 1840; whiteSpace();
10790+
State = 1833; whiteSpace();
1080910791
}
1081010792
}
1081110793

10812-
State = 1843; expression(0);
10794+
State = 1836; expression(0);
10795+
}
10796+
break;
10797+
10798+
case 2:
10799+
EnterOuterAlt(_localctx, 2);
10800+
{
10801+
State = 1838; selectStartValue();
10802+
State = 1839; whiteSpace();
10803+
State = 1840; Match(TO);
10804+
State = 1841; whiteSpace();
10805+
State = 1842; selectEndValue();
10806+
}
10807+
break;
10808+
10809+
case 3:
10810+
EnterOuterAlt(_localctx, 3);
10811+
{
10812+
State = 1844; expression(0);
1081310813
}
1081410814
break;
1081510815
}
@@ -19759,8 +19759,8 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) {
1975919759
"\x3\x84\x3\x85\x3\x85\x3\x85\x3\x85\x5\x85\x70E\n\x85\x3\x85\x3\x85\x5"+
1976019760
"\x85\x712\n\x85\x3\x85\a\x85\x715\n\x85\f\x85\xE\x85\x718\v\x85\x3\x85"+
1976119761
"\x3\x85\x3\x85\x3\x86\x3\x86\x5\x86\x71F\n\x86\x3\x86\x3\x86\x3\x86\x3"+
19762-
"\x86\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x5"+
19763-
"\x87\x72E\n\x87\x5\x87\x730\n\x87\x3\x87\x3\x87\x5\x87\x734\n\x87\x3\x87"+
19762+
"\x86\x3\x87\x3\x87\x5\x87\x727\n\x87\x5\x87\x729\n\x87\x3\x87\x3\x87\x5"+
19763+
"\x87\x72D\n\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87"+
1976419764
"\x3\x87\x5\x87\x738\n\x87\x3\x88\x3\x88\x3\x89\x3\x89\x3\x8A\x3\x8A\x3"+
1976519765
"\x8A\x3\x8A\x5\x8A\x742\n\x8A\x3\x8A\x3\x8A\x5\x8A\x746\n\x8A\x3\x8A\x3"+
1976619766
"\x8A\x3\x8B\x3\x8B\x3\x8B\x5\x8B\x74D\n\x8B\x3\x8B\x3\x8B\x5\x8B\x751"+
@@ -20498,19 +20498,19 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) {
2049820498
"\x2\x71A\x71B\x5\x1E\x10\x2\x71B\x109\x3\x2\x2\x2\x71C\x71E\a\x43\x2\x2"+
2049920499
"\x71D\x71F\x5\x1B6\xDC\x2\x71E\x71D\x3\x2\x2\x2\x71E\x71F\x3\x2\x2\x2"+
2050020500
"\x71F\x720\x3\x2\x2\x2\x720\x721\a[\x2\x2\x721\x722\x5\x1A0\xD1\x2\x722"+
20501-
"\x723\x5\x1E\x10\x2\x723\x10B\x3\x2\x2\x2\x724\x738\x5\x172\xBA\x2\x725"+
20502-
"\x726\x5\x10E\x88\x2\x726\x727\x5\x1B6\xDC\x2\x727\x728\a\xC2\x2\x2\x728"+
20503-
"\x729\x5\x1B6\xDC\x2\x729\x72A\x5\x110\x89\x2\x72A\x738\x3\x2\x2\x2\x72B"+
20504-
"\x72D\a~\x2\x2\x72C\x72E\x5\x1B6\xDC\x2\x72D\x72C\x3\x2\x2\x2\x72D\x72E"+
20505-
"\x3\x2\x2\x2\x72E\x730\x3\x2\x2\x2\x72F\x72B\x3\x2\x2\x2\x72F\x730\x3"+
20506-
"\x2\x2\x2\x730\x731\x3\x2\x2\x2\x731\x733\x5\x15E\xB0\x2\x732\x734\x5"+
20507-
"\x1B6\xDC\x2\x733\x732\x3\x2\x2\x2\x733\x734\x3\x2\x2\x2\x734\x735\x3"+
20508-
"\x2\x2\x2\x735\x736\x5\x172\xBA\x2\x736\x738\x3\x2\x2\x2\x737\x724\x3"+
20509-
"\x2\x2\x2\x737\x725\x3\x2\x2\x2\x737\x72F\x3\x2\x2\x2\x738\x10D\x3\x2"+
20510-
"\x2\x2\x739\x73A\x5\x172\xBA\x2\x73A\x10F\x3\x2\x2\x2\x73B\x73C\x5\x172"+
20511-
"\xBA\x2\x73C\x111\x3\x2\x2\x2\x73D\x73E\a\xB6\x2\x2\x73E\x73F\x5\x1B6"+
20512-
"\xDC\x2\x73F\x741\x5\x17E\xC0\x2\x740\x742\x5\x1B6\xDC\x2\x741\x740\x3"+
20513-
"\x2\x2\x2\x741\x742\x3\x2\x2\x2\x742\x743\x3\x2\x2\x2\x743\x745\a\xD4"+
20501+
"\x723\x5\x1E\x10\x2\x723\x10B\x3\x2\x2\x2\x724\x726\a~\x2\x2\x725\x727"+
20502+
"\x5\x1B6\xDC\x2\x726\x725\x3\x2\x2\x2\x726\x727\x3\x2\x2\x2\x727\x729"+
20503+
"\x3\x2\x2\x2\x728\x724\x3\x2\x2\x2\x728\x729\x3\x2\x2\x2\x729\x72A\x3"+
20504+
"\x2\x2\x2\x72A\x72C\x5\x15E\xB0\x2\x72B\x72D\x5\x1B6\xDC\x2\x72C\x72B"+
20505+
"\x3\x2\x2\x2\x72C\x72D\x3\x2\x2\x2\x72D\x72E\x3\x2\x2\x2\x72E\x72F\x5"+
20506+
"\x172\xBA\x2\x72F\x738\x3\x2\x2\x2\x730\x731\x5\x10E\x88\x2\x731\x732"+
20507+
"\x5\x1B6\xDC\x2\x732\x733\a\xC2\x2\x2\x733\x734\x5\x1B6\xDC\x2\x734\x735"+
20508+
"\x5\x110\x89\x2\x735\x738\x3\x2\x2\x2\x736\x738\x5\x172\xBA\x2\x737\x728"+
20509+
"\x3\x2\x2\x2\x737\x730\x3\x2\x2\x2\x737\x736\x3\x2\x2\x2\x738\x10D\x3"+
20510+
"\x2\x2\x2\x739\x73A\x5\x172\xBA\x2\x73A\x10F\x3\x2\x2\x2\x73B\x73C\x5"+
20511+
"\x172\xBA\x2\x73C\x111\x3\x2\x2\x2\x73D\x73E\a\xB6\x2\x2\x73E\x73F\x5"+
20512+
"\x1B6\xDC\x2\x73F\x741\x5\x17E\xC0\x2\x740\x742\x5\x1B6\xDC\x2\x741\x740"+
20513+
"\x3\x2\x2\x2\x741\x742\x3\x2\x2\x2\x742\x743\x3\x2\x2\x2\x743\x745\a\xD4"+
2051420514
"\x2\x2\x744\x746\x5\x1B6\xDC\x2\x745\x744\x3\x2\x2\x2\x745\x746\x3\x2"+
2051520515
"\x2\x2\x746\x747\x3\x2\x2\x2\x747\x748\x5\x172\xBA\x2\x748\x113\x3\x2"+
2051620516
"\x2\x2\x749\x74A\x5\x170\xB9\x2\x74A\x74B\x5\x1B6\xDC\x2\x74B\x74D\x3"+
@@ -20897,7 +20897,7 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) {
2089720897
"\x5F2\x5F6\x5FA\x602\x606\x614\x61E\x622\x627\x632\x636\x63B\x641\x645"+
2089820898
"\x64B\x64E\x653\x65C\x660\x666\x669\x672\x676\x67C\x67F\x689\x68D\x690"+
2089920899
"\x693\x696\x69A\x69E\x6A3\x6AC\x6B2\x6B6\x6BB\x6C2\x6CE\x6D0\x6D6\x6D8"+
20900-
"\x6E0\x6E4\x6F4\x6F8\x6FF\x703\x70D\x711\x716\x71E\x72D\x72F\x733\x737"+
20900+
"\x6E0\x6E4\x6F4\x6F8\x6FF\x703\x70D\x711\x716\x71E\x726\x728\x72C\x737"+
2090120901
"\x741\x745\x74C\x750\x754\x758\x75B\x765\x77B\x780\x784\x78F\x795\x798"+
2090220902
"\x79B\x7A1\x7A5\x7AA\x7AF\x7B1\x7B7\x7C2\x7C7\x7CD\x7D1\x7D6\x7DB\x7DF"+
2090320903
"\x7E3\x7E5\x7E9\x7EB\x7F0\x804\x806\x80C\x80E\x812\x816\x819\x81C\x820"+

Rubberduck.Parsing/Grammar/VBAParser.g4

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -459,9 +459,9 @@ caseClause :
459459
;
460460
caseElseClause : CASE whiteSpace? ELSE endOfStatement block;
461461
rangeClause :
462-
expression
463-
| selectStartValue whiteSpace TO whiteSpace selectEndValue
464-
| (IS whiteSpace?)? comparisonOperator whiteSpace? expression
462+
(IS whiteSpace?)? comparisonOperator whiteSpace? expression
463+
| selectStartValue whiteSpace TO whiteSpace selectEndValue
464+
| expression
465465
;
466466
selectStartValue : expression;
467467
selectEndValue : expression;
@@ -562,28 +562,28 @@ visibility : PRIVATE | PUBLIC | FRIEND | GLOBAL;
562562

563563
// 5.6 Expressions
564564
expression :
565-
// Literal Expression has to come before lExpression, otherwise it'll be classified as simple name expression instead.
566-
literalExpression # literalExpr
567-
| lExpression # lExpr
568-
| builtInType # builtInTypeExpr
569-
| LPAREN whiteSpace? expression whiteSpace? RPAREN # parenthesizedExpr
570-
| TYPEOF whiteSpace expression # typeofexpr // To make the grammar SLL, the type-of-is-expression is actually the child of an IS relational op.
571-
| NEW whiteSpace expression # newExpr
572-
| expression whiteSpace? POW whiteSpace? expression # powOp
573-
| MINUS whiteSpace? expression # unaryMinusOp
574-
| expression whiteSpace? (MULT | DIV) whiteSpace? expression # multOp
575-
| expression whiteSpace? INTDIV whiteSpace? expression # intDivOp
576-
| expression whiteSpace? MOD whiteSpace? expression # modOp
577-
| expression whiteSpace? (PLUS | MINUS) whiteSpace? expression # addOp
578-
| expression whiteSpace? AMPERSAND whiteSpace? expression # concatOp
579-
| expression whiteSpace? (EQ | NEQ | LT | GT | LEQ | GEQ | LIKE | IS) whiteSpace? expression # relationalOp
580-
| NOT whiteSpace? expression # logicalNotOp
581-
| expression whiteSpace? AND whiteSpace? expression # logicalAndOp
582-
| expression whiteSpace? OR whiteSpace? expression # logicalOrOp
583-
| expression whiteSpace? XOR whiteSpace? expression # logicalXorOp
584-
| expression whiteSpace? EQV whiteSpace? expression # logicalEqvOp
585-
| expression whiteSpace? IMP whiteSpace? expression # logicalImpOp
586-
| HASH expression # markedFileNumberExpr // Added to support special forms such as Input(file1, #file1)
565+
// Literal Expression has to come before lExpression, otherwise it'll be classified as simple name expression instead.
566+
literalExpression # literalExpr
567+
| lExpression # lExpr
568+
| builtInType # builtInTypeExpr
569+
| LPAREN whiteSpace? expression whiteSpace? RPAREN # parenthesizedExpr
570+
| TYPEOF whiteSpace expression # typeofexpr // To make the grammar SLL, the type-of-is-expression is actually the child of an IS relational op.
571+
| NEW whiteSpace expression # newExpr
572+
| expression whiteSpace? POW whiteSpace? expression # powOp
573+
| MINUS whiteSpace? expression # unaryMinusOp
574+
| expression whiteSpace? (MULT | DIV) whiteSpace? expression # multOp
575+
| expression whiteSpace? INTDIV whiteSpace? expression # intDivOp
576+
| expression whiteSpace? MOD whiteSpace? expression # modOp
577+
| expression whiteSpace? (PLUS | MINUS) whiteSpace? expression # addOp
578+
| expression whiteSpace? AMPERSAND whiteSpace? expression # concatOp
579+
| expression whiteSpace? (EQ | NEQ | LT | GT | LEQ | GEQ | LIKE | IS) whiteSpace? expression # relationalOp
580+
| NOT whiteSpace? expression # logicalNotOp
581+
| expression whiteSpace? AND whiteSpace? expression # logicalAndOp
582+
| expression whiteSpace? OR whiteSpace? expression # logicalOrOp
583+
| expression whiteSpace? XOR whiteSpace? expression # logicalXorOp
584+
| expression whiteSpace? EQV whiteSpace? expression # logicalEqvOp
585+
| expression whiteSpace? IMP whiteSpace? expression # logicalImpOp
586+
| HASH expression # markedFileNumberExpr // Added to support special forms such as Input(file1, #file1)
587587
;
588588

589589
// 5.6.5 Literal Expressions

Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// </auto-generated>
99
//------------------------------------------------------------------------------
1010

11-
// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
11+
// Generated from C:\Work\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
1212

1313
// Unreachable code detected
1414
#pragma warning disable 0162

Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// </auto-generated>
99
//------------------------------------------------------------------------------
1010

11-
// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
11+
// Generated from C:\Work\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
1212

1313
// Unreachable code detected
1414
#pragma warning disable 0162

Rubberduck.Parsing/Grammar/VBAParserListener.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// </auto-generated>
99
//------------------------------------------------------------------------------
1010

11-
// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
11+
// Generated from C:\Work\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
1212

1313
// Unreachable code detected
1414
#pragma warning disable 0162

Rubberduck.Parsing/Grammar/VBAParserVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// </auto-generated>
99
//------------------------------------------------------------------------------
1010

11-
// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
11+
// Generated from C:\Work\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.g4 by ANTLR 4.3
1212

1313
// Unreachable code detected
1414
#pragma warning disable 0162

0 commit comments

Comments
 (0)