Skip to content

Commit 079b32f

Browse files
authored
Merge branch 'next' into parserIssues
2 parents 33436c3 + 9b59f23 commit 079b32f

11 files changed

+4661
-3313
lines changed

Rubberduck.Parsing/Grammar/VBAParser.cs

Lines changed: 3800 additions & 3082 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Grammar/VBAParser.g4

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ moduleDeclarationsElement :
7575
| implementsStmt
7676
| variableStmt
7777
| moduleOption
78-
| typeStmt)
78+
| publicTypeDeclaration
79+
| privateTypeDeclaration)
7980
;
8081

8182
moduleBody :
@@ -471,13 +472,24 @@ subStmt :
471472
;
472473
subroutineName : identifier;
473474

474-
typeStmt :
475-
(visibility whiteSpace)? TYPE whiteSpace identifier endOfStatement
476-
typeStmt_Element*
477-
END_TYPE
478-
;
479-
480-
typeStmt_Element : identifier (whiteSpace? LPAREN (whiteSpace? subscripts)? whiteSpace? RPAREN)? (whiteSpace asTypeClause)? endOfStatement;
475+
// 5.2.3.3 User Defined Type Declarations
476+
publicTypeDeclaration : ((GLOBAL | PUBLIC) whiteSpace)? udtDeclaration;
477+
privateTypeDeclaration : PRIVATE whiteSpace udtDeclaration;
478+
udtDeclaration : TYPE whiteSpace untypedIdentifier endOfStatement udtMemberList endOfStatement END_TYPE;
479+
udtMemberList : udtMember (endOfStatement udtMember)*;
480+
udtMember : reservedNameMemberDeclaration | untypedNameMemberDeclaration;
481+
untypedNameMemberDeclaration : untypedIdentifier whiteSpace? optionalArrayClause;
482+
reservedNameMemberDeclaration : unrestrictedIdentifier whiteSpace asTypeClause;
483+
optionalArrayClause : (arrayDim whiteSpace)? asTypeClause;
484+
485+
// 5.2.3.1.3 Array Dimensions and Bounds
486+
arrayDim : LPAREN whiteSpace? boundsList? whiteSpace? RPAREN;
487+
boundsList : dimSpec (whiteSpace? COMMA whiteSpace? dimSpec)*;
488+
dimSpec : (lowerBound whiteSpace?)? upperBound;
489+
lowerBound : constantExpression whiteSpace? TO;
490+
upperBound : constantExpression;
491+
492+
constantExpression : expression;
481493

482494
variableStmt : (DIM | STATIC | visibility) whiteSpace (WITHEVENTS whiteSpace)? variableListStmt;
483495
variableListStmt : variableSubStmt (whiteSpace? COMMA whiteSpace? variableSubStmt)*;

Rubberduck.Parsing/Grammar/VBAParserBaseListener.cs

Lines changed: 182 additions & 26 deletions
Large diffs are not rendered by default.

Rubberduck.Parsing/Grammar/VBAParserBaseVisitor.cs

Lines changed: 154 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
5454
/// <return>The visitor result.</return>
5555
public virtual Result VisitPowOp([NotNull] VBAParser.PowOpContext context) { return VisitChildren(context); }
5656

57+
/// <summary>
58+
/// Visit a parse tree produced by <see cref="VBAParser.udtMember"/>.
59+
/// <para>
60+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
61+
/// on <paramref name="context"/>.
62+
/// </para>
63+
/// </summary>
64+
/// <param name="context">The parse tree.</param>
65+
/// <return>The visitor result.</return>
66+
public virtual Result VisitUdtMember([NotNull] VBAParser.UdtMemberContext context) { return VisitChildren(context); }
67+
5768
/// <summary>
5869
/// Visit a parse tree produced by <see cref="VBAParser.tabNumber"/>.
5970
/// <para>
@@ -252,6 +263,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
252263
/// <return>The visitor result.</return>
253264
public virtual Result VisitIndexExpr([NotNull] VBAParser.IndexExprContext context) { return VisitChildren(context); }
254265

266+
/// <summary>
267+
/// Visit a parse tree produced by <see cref="VBAParser.untypedNameMemberDeclaration"/>.
268+
/// <para>
269+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
270+
/// on <paramref name="context"/>.
271+
/// </para>
272+
/// </summary>
273+
/// <param name="context">The parse tree.</param>
274+
/// <return>The visitor result.</return>
275+
public virtual Result VisitUntypedNameMemberDeclaration([NotNull] VBAParser.UntypedNameMemberDeclarationContext context) { return VisitChildren(context); }
276+
255277
/// <summary>
256278
/// Visit a parse tree produced by <see cref="VBAParser.inputList"/>.
257279
/// <para>
@@ -285,6 +307,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
285307
/// <return>The visitor result.</return>
286308
public virtual Result VisitModuleBody([NotNull] VBAParser.ModuleBodyContext context) { return VisitChildren(context); }
287309

310+
/// <summary>
311+
/// Visit a parse tree produced by <see cref="VBAParser.udtMemberList"/>.
312+
/// <para>
313+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
314+
/// on <paramref name="context"/>.
315+
/// </para>
316+
/// </summary>
317+
/// <param name="context">The parse tree.</param>
318+
/// <return>The visitor result.</return>
319+
public virtual Result VisitUdtMemberList([NotNull] VBAParser.UdtMemberListContext context) { return VisitChildren(context); }
320+
288321
/// <summary>
289322
/// Visit a parse tree produced by <see cref="VBAParser.letterRange"/>.
290323
/// <para>
@@ -417,6 +450,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
417450
/// <return>The visitor result.</return>
418451
public virtual Result VisitLineWidth([NotNull] VBAParser.LineWidthContext context) { return VisitChildren(context); }
419452

453+
/// <summary>
454+
/// Visit a parse tree produced by <see cref="VBAParser.publicTypeDeclaration"/>.
455+
/// <para>
456+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
457+
/// on <paramref name="context"/>.
458+
/// </para>
459+
/// </summary>
460+
/// <param name="context">The parse tree.</param>
461+
/// <return>The visitor result.</return>
462+
public virtual Result VisitPublicTypeDeclaration([NotNull] VBAParser.PublicTypeDeclarationContext context) { return VisitChildren(context); }
463+
420464
/// <summary>
421465
/// Visit a parse tree produced by <see cref="VBAParser.asTypeClause"/>.
422466
/// <para>
@@ -527,6 +571,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
527571
/// <return>The visitor result.</return>
528572
public virtual Result VisitAnnotation([NotNull] VBAParser.AnnotationContext context) { return VisitChildren(context); }
529573

574+
/// <summary>
575+
/// Visit a parse tree produced by <see cref="VBAParser.reservedNameMemberDeclaration"/>.
576+
/// <para>
577+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
578+
/// on <paramref name="context"/>.
579+
/// </para>
580+
/// </summary>
581+
/// <param name="context">The parse tree.</param>
582+
/// <return>The visitor result.</return>
583+
public virtual Result VisitReservedNameMemberDeclaration([NotNull] VBAParser.ReservedNameMemberDeclarationContext context) { return VisitChildren(context); }
584+
530585
/// <summary>
531586
/// Visit a parse tree produced by <see cref="VBAParser.mandatoryLineContinuation"/>.
532587
/// <para>
@@ -1044,6 +1099,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
10441099
/// <return>The visitor result.</return>
10451100
public virtual Result VisitAnnotationArgList([NotNull] VBAParser.AnnotationArgListContext context) { return VisitChildren(context); }
10461101

1102+
/// <summary>
1103+
/// Visit a parse tree produced by <see cref="VBAParser.upperBound"/>.
1104+
/// <para>
1105+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1106+
/// on <paramref name="context"/>.
1107+
/// </para>
1108+
/// </summary>
1109+
/// <param name="context">The parse tree.</param>
1110+
/// <return>The visitor result.</return>
1111+
public virtual Result VisitUpperBound([NotNull] VBAParser.UpperBoundContext context) { return VisitChildren(context); }
1112+
10471113
/// <summary>
10481114
/// Visit a parse tree produced by <see cref="VBAParser.specifiedPositionalArgument"/>.
10491115
/// <para>
@@ -1319,6 +1385,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
13191385
/// <return>The visitor result.</return>
13201386
public virtual Result VisitCallStmt([NotNull] VBAParser.CallStmtContext context) { return VisitChildren(context); }
13211387

1388+
/// <summary>
1389+
/// Visit a parse tree produced by <see cref="VBAParser.optionalArrayClause"/>.
1390+
/// <para>
1391+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1392+
/// on <paramref name="context"/>.
1393+
/// </para>
1394+
/// </summary>
1395+
/// <param name="context">The parse tree.</param>
1396+
/// <return>The visitor result.</return>
1397+
public virtual Result VisitOptionalArrayClause([NotNull] VBAParser.OptionalArrayClauseContext context) { return VisitChildren(context); }
1398+
13221399
/// <summary>
13231400
/// Visit a parse tree produced by <see cref="VBAParser.debugPrintSub"/>.
13241401
/// <para>
@@ -1374,6 +1451,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
13741451
/// <return>The visitor result.</return>
13751452
public virtual Result VisitModuleBodyElement([NotNull] VBAParser.ModuleBodyElementContext context) { return VisitChildren(context); }
13761453

1454+
/// <summary>
1455+
/// Visit a parse tree produced by <see cref="VBAParser.udtDeclaration"/>.
1456+
/// <para>
1457+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1458+
/// on <paramref name="context"/>.
1459+
/// </para>
1460+
/// </summary>
1461+
/// <param name="context">The parse tree.</param>
1462+
/// <return>The visitor result.</return>
1463+
public virtual Result VisitUdtDeclaration([NotNull] VBAParser.UdtDeclarationContext context) { return VisitChildren(context); }
1464+
13771465
/// <summary>
13781466
/// Visit a parse tree produced by <see cref="VBAParser.seekStmt"/>.
13791467
/// <para>
@@ -1451,17 +1539,6 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
14511539
/// <return>The visitor result.</return>
14521540
public virtual Result VisitModuleAttributes([NotNull] VBAParser.ModuleAttributesContext context) { return VisitChildren(context); }
14531541

1454-
/// <summary>
1455-
/// Visit a parse tree produced by <see cref="VBAParser.typeStmt_Element"/>.
1456-
/// <para>
1457-
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1458-
/// on <paramref name="context"/>.
1459-
/// </para>
1460-
/// </summary>
1461-
/// <param name="context">The parse tree.</param>
1462-
/// <return>The visitor result.</return>
1463-
public virtual Result VisitTypeStmt_Element([NotNull] VBAParser.TypeStmt_ElementContext context) { return VisitChildren(context); }
1464-
14651542
/// <summary>
14661543
/// Visit a parse tree produced by <see cref="VBAParser.type"/>.
14671544
/// <para>
@@ -1594,6 +1671,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
15941671
/// <return>The visitor result.</return>
15951672
public virtual Result VisitOnErrorStmt([NotNull] VBAParser.OnErrorStmtContext context) { return VisitChildren(context); }
15961673

1674+
/// <summary>
1675+
/// Visit a parse tree produced by <see cref="VBAParser.dimSpec"/>.
1676+
/// <para>
1677+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1678+
/// on <paramref name="context"/>.
1679+
/// </para>
1680+
/// </summary>
1681+
/// <param name="context">The parse tree.</param>
1682+
/// <return>The visitor result.</return>
1683+
public virtual Result VisitDimSpec([NotNull] VBAParser.DimSpecContext context) { return VisitChildren(context); }
1684+
15971685
/// <summary>
15981686
/// Visit a parse tree produced by <see cref="VBAParser.identifier"/>.
15991687
/// <para>
@@ -1748,6 +1836,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
17481836
/// <return>The visitor result.</return>
17491837
public virtual Result VisitRedimStmt([NotNull] VBAParser.RedimStmtContext context) { return VisitChildren(context); }
17501838

1839+
/// <summary>
1840+
/// Visit a parse tree produced by <see cref="VBAParser.boundsList"/>.
1841+
/// <para>
1842+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1843+
/// on <paramref name="context"/>.
1844+
/// </para>
1845+
/// </summary>
1846+
/// <param name="context">The parse tree.</param>
1847+
/// <return>The visitor result.</return>
1848+
public virtual Result VisitBoundsList([NotNull] VBAParser.BoundsListContext context) { return VisitChildren(context); }
1849+
17511850
/// <summary>
17521851
/// Visit a parse tree produced by <see cref="VBAParser.literalIdentifier"/>.
17531852
/// <para>
@@ -1847,6 +1946,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
18471946
/// <return>The visitor result.</return>
18481947
public virtual Result VisitResumeStmt([NotNull] VBAParser.ResumeStmtContext context) { return VisitChildren(context); }
18491948

1949+
/// <summary>
1950+
/// Visit a parse tree produced by <see cref="VBAParser.constantExpression"/>.
1951+
/// <para>
1952+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
1953+
/// on <paramref name="context"/>.
1954+
/// </para>
1955+
/// </summary>
1956+
/// <param name="context">The parse tree.</param>
1957+
/// <return>The visitor result.</return>
1958+
public virtual Result VisitConstantExpression([NotNull] VBAParser.ConstantExpressionContext context) { return VisitChildren(context); }
1959+
18501960
/// <summary>
18511961
/// Visit a parse tree produced by <see cref="VBAParser.debugPrint"/>.
18521962
/// <para>
@@ -1968,6 +2078,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
19682078
/// <return>The visitor result.</return>
19692079
public virtual Result VisitCaseClause([NotNull] VBAParser.CaseClauseContext context) { return VisitChildren(context); }
19702080

2081+
/// <summary>
2082+
/// Visit a parse tree produced by <see cref="VBAParser.lowerBound"/>.
2083+
/// <para>
2084+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
2085+
/// on <paramref name="context"/>.
2086+
/// </para>
2087+
/// </summary>
2088+
/// <param name="context">The parse tree.</param>
2089+
/// <return>The visitor result.</return>
2090+
public virtual Result VisitLowerBound([NotNull] VBAParser.LowerBoundContext context) { return VisitChildren(context); }
2091+
19712092
/// <summary>
19722093
/// Visit a parse tree produced by <see cref="VBAParser.exitStmt"/>.
19732094
/// <para>
@@ -2001,6 +2122,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
20012122
/// <return>The visitor result.</return>
20022123
public virtual Result VisitArgList([NotNull] VBAParser.ArgListContext context) { return VisitChildren(context); }
20032124

2125+
/// <summary>
2126+
/// Visit a parse tree produced by <see cref="VBAParser.arrayDim"/>.
2127+
/// <para>
2128+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
2129+
/// on <paramref name="context"/>.
2130+
/// </para>
2131+
/// </summary>
2132+
/// <param name="context">The parse tree.</param>
2133+
/// <return>The visitor result.</return>
2134+
public virtual Result VisitArrayDim([NotNull] VBAParser.ArrayDimContext context) { return VisitChildren(context); }
2135+
20042136
/// <summary>
20052137
/// Visit a parse tree produced by <see cref="VBAParser.eventArgumentList"/>.
20062138
/// <para>
@@ -2078,17 +2210,6 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
20782210
/// <return>The visitor result.</return>
20792211
public virtual Result VisitMissingPositionalArgument([NotNull] VBAParser.MissingPositionalArgumentContext context) { return VisitChildren(context); }
20802212

2081-
/// <summary>
2082-
/// Visit a parse tree produced by <see cref="VBAParser.typeStmt"/>.
2083-
/// <para>
2084-
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
2085-
/// on <paramref name="context"/>.
2086-
/// </para>
2087-
/// </summary>
2088-
/// <param name="context">The parse tree.</param>
2089-
/// <return>The visitor result.</return>
2090-
public virtual Result VisitTypeStmt([NotNull] VBAParser.TypeStmtContext context) { return VisitChildren(context); }
2091-
20922213
/// <summary>
20932214
/// Visit a parse tree produced by <see cref="VBAParser.multOp"/>.
20942215
/// <para>
@@ -2386,6 +2507,17 @@ public partial class VBAParserBaseVisitor<Result> : AbstractParseTreeVisitor<Res
23862507
/// <return>The visitor result.</return>
23872508
public virtual Result VisitIntegerExpression([NotNull] VBAParser.IntegerExpressionContext context) { return VisitChildren(context); }
23882509

2510+
/// <summary>
2511+
/// Visit a parse tree produced by <see cref="VBAParser.privateTypeDeclaration"/>.
2512+
/// <para>
2513+
/// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
2514+
/// on <paramref name="context"/>.
2515+
/// </para>
2516+
/// </summary>
2517+
/// <param name="context">The parse tree.</param>
2518+
/// <return>The visitor result.</return>
2519+
public virtual Result VisitPrivateTypeDeclaration([NotNull] VBAParser.PrivateTypeDeclarationContext context) { return VisitChildren(context); }
2520+
23892521
/// <summary>
23902522
/// Visit a parse tree produced by <see cref="VBAParser.markedFileNumber"/>.
23912523
/// <para>

0 commit comments

Comments
 (0)