diff --git a/src/Libraries/NRefactory/Project/NRefactory.csproj b/src/Libraries/NRefactory/Project/NRefactory.csproj
index 7678fcde9c..35e2830af6 100644
--- a/src/Libraries/NRefactory/Project/NRefactory.csproj
+++ b/src/Libraries/NRefactory/Project/NRefactory.csproj
@@ -140,6 +140,7 @@
CocoParserGenerator
+ ICSharpCode.NRefactory.Parser.VBNet.Experimental
ExpressionFinder.atg
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg
index 2b40c4eedd..0ba739573d 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg
@@ -1,4 +1,5 @@
-using System.Collections;
+using System;
+using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
@@ -261,11 +262,12 @@ ImportsStatement =
.
AttributeBlock =
- "<" { ANY } ">" [ EOL ]
+ "<" (. PushContext(Context.Attribute); .) { ANY } ">" (. PopContext(); .) [ EOL ]
.
NamespaceMemberDeclaration =
- NamespaceDeclaration | TypeDeclaration
+ NamespaceDeclaration |
+ TypeDeclaration
.
NamespaceDeclaration =
@@ -286,20 +288,26 @@ TypeDeclaration =
MemberDeclaration =
(. PushContext(Context.Member); .)
+ { AttributeBlock } { MemberModifier }
(
+ MemberVariableOrConstantDeclaration |
SubOrFunctionDeclaration
)
(. PopContext(); .)
.
SubOrFunctionDeclaration =
- { AttributeBlock } { MemberModifier } ("Sub" | "Function")
+ ("Sub" | "Function")
(. PushContext(Context.IdentifierExpected); .) ANY (. PopContext(); .)
[ "(" [ ParameterList ] ")" ] [ "As" TypeName ]
Block
"End" ("Sub" | "Function") StatementTerminator
.
+MemberVariableOrConstantDeclaration =
+ [ "Const" ] Identifier [ "As" TypeName ] [ "=" Expression ] StatementTerminator
+.
+
ParameterList =
Parameter { "," Parameter }
.
@@ -443,7 +451,9 @@ MemberModifier =
"NotOverridable" |
"Overrides" |
"Overloads" |
- "Partial"
+ "Partial" |
+ "WithEvents" |
+ "Dim"
.
ParameterModifier =
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.cs
index f4928e7502..aa81b74f5d 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.cs
@@ -59,6 +59,7 @@ namespace ICSharpCode.NRefactory.Parser.VBNet.Experimental
IdentifierExpected,
Body,
Xml,
+ Attribute,
Debug
}
}
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs
index 62e1e512c7..fd45a72184 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
@@ -8,9 +9,6 @@ using ASTAttribute = ICSharpCode.NRefactory.Ast.Attribute;
-using System;
-using System.Collections.Generic;
-
namespace ICSharpCode.NRefactory.Parser.VBNet.Experimental {
@@ -49,7 +47,7 @@ int currentState = 1;
goto switchlbl;
}
case 1: { // start of ExpressionFinder
- PushContext(Context.Global);
+ PushContext(Context.Global);
goto case 3;
}
case 2: {
@@ -87,7 +85,7 @@ int currentState = 1;
}
case 8: {
stateStack.Push(9);
- goto case 32; // NamespaceMemberDeclaration
+ goto case 34; // NamespaceMemberDeclaration
}
case 9: {
if (set[0, t.kind]) {
@@ -97,7 +95,7 @@ int currentState = 1;
}
}
case 10: {
- PopContext();
+ PopContext();
currentState = stateStack.Pop();
goto switchlbl;
}
@@ -152,7 +150,7 @@ int currentState = 1;
break;
}
case 20: {
- nextTokenIsPotentialStartOfXmlMode = true;
+ nextTokenIsPotentialStartOfXmlMode = true;
goto case 22;
}
case 21: {
@@ -171,238 +169,237 @@ int currentState = 1;
}
case 24: { // start of AttributeBlock
Expect(28, t); // "<"
- currentState = 26;
+ currentState = 25;
break;
}
case 25: {
- currentState = 26;
- break;
+ PushContext(Context.Attribute);
+ goto case 27;
}
case 26: {
+ currentState = 27;
+ break;
+ }
+ case 27: {
if (set[2, t.kind]) {
- goto case 25;
+ goto case 26;
} else {
- goto case 27;
+ goto case 28;
}
}
- case 27: {
+ case 28: {
Expect(27, t); // ">"
currentState = 29;
break;
}
- case 28: {
+ case 29: {
+ PopContext();
+ goto case 31;
+ }
+ case 30: {
Expect(1, t); // EOL
currentState = stateStack.Pop();
break;
}
- case 29: {
+ case 31: {
if (t.kind == 1) {
- goto case 28;
+ goto case 30;
} else {
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 30: {
- goto case 34; // NamespaceDeclaration
+ case 32: {
+ goto case 36; // NamespaceDeclaration
}
- case 31: {
- goto case 44; // TypeDeclaration
+ case 33: {
+ goto case 46; // TypeDeclaration
}
- case 32: { // start of NamespaceMemberDeclaration
+ case 34: { // start of NamespaceMemberDeclaration
if (t.kind == 146) {
- goto case 30;
+ goto case 32;
} else {
- goto case 33;
+ goto case 35;
}
}
- case 33: {
+ case 35: {
if (set[3, t.kind]) {
- goto case 31;
+ goto case 33;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 34: { // start of NamespaceDeclaration
+ case 36: { // start of NamespaceDeclaration
Expect(146, t); // "Namespace"
- currentState = 36;
+ currentState = 38;
break;
}
- case 35: {
- currentState = 36;
+ case 37: {
+ currentState = 38;
break;
}
- case 36: {
+ case 38: {
if (set[1, t.kind]) {
- goto case 35;
- } else {
goto case 37;
+ } else {
+ goto case 39;
}
}
- case 37: {
- stateStack.Push(39);
+ case 39: {
+ stateStack.Push(41);
goto case 13; // StatementTerminator
}
- case 38: {
- stateStack.Push(39);
- goto case 32; // NamespaceMemberDeclaration
+ case 40: {
+ stateStack.Push(41);
+ goto case 34; // NamespaceMemberDeclaration
}
- case 39: {
+ case 41: {
if (set[4, t.kind]) {
- goto case 38;
- } else {
goto case 40;
+ } else {
+ goto case 42;
}
}
- case 40: {
+ case 42: {
Expect(100, t); // "End"
- currentState = 41;
+ currentState = 43;
break;
}
- case 41: {
+ case 43: {
Expect(146, t); // "Namespace"
- currentState = 42;
+ currentState = 44;
break;
}
- case 42: {
+ case 44: {
goto case 13; // StatementTerminator
}
- case 43: {
- stateStack.Push(44);
+ case 45: {
+ stateStack.Push(46);
goto case 24; // AttributeBlock
}
- case 44: { // start of TypeDeclaration
+ case 46: { // start of TypeDeclaration
if (t.kind == 28) {
- goto case 43;
+ goto case 45;
} else {
- goto case 46;
+ goto case 48;
}
}
- case 45: {
- stateStack.Push(46);
- goto case 338; // TypeModifier
+ case 47: {
+ stateStack.Push(48);
+ goto case 357; // TypeModifier
}
- case 46: {
+ case 48: {
if (set[5, t.kind]) {
- goto case 45;
+ goto case 47;
} else {
- goto case 49;
+ goto case 51;
}
}
- case 47: {
+ case 49: {
Expect(141, t); // "Module"
- currentState = 52;
+ currentState = 54;
break;
}
- case 48: {
+ case 50: {
Expect(71, t); // "Class"
- currentState = 52;
+ currentState = 54;
break;
}
- case 49: {
+ case 51: {
if (t.kind == 141) {
- goto case 47;
+ goto case 49;
} else {
- goto case 50;
+ goto case 52;
}
}
- case 50: {
+ case 52: {
if (t.kind == 71) {
- goto case 48;
+ goto case 50;
} else {
Error(t);
- goto case 52;
+ goto case 54;
}
}
- case 51: {
- currentState = 52;
+ case 53: {
+ currentState = 54;
break;
}
- case 52: {
+ case 54: {
if (set[1, t.kind]) {
- goto case 51;
- } else {
goto case 53;
+ } else {
+ goto case 55;
}
}
- case 53: {
- stateStack.Push(54);
- goto case 13; // StatementTerminator
- }
- case 54: {
- PushContext(Context.Type);
- goto case 56;
- }
case 55: {
stateStack.Push(56);
- goto case 64; // MemberDeclaration
+ goto case 13; // StatementTerminator
}
case 56: {
+ PushContext(Context.Type);
+ goto case 58;
+ }
+ case 57: {
+ stateStack.Push(58);
+ goto case 66; // MemberDeclaration
+ }
+ case 58: {
if (set[6, t.kind]) {
- goto case 55;
- } else {
goto case 57;
+ } else {
+ goto case 59;
}
}
- case 57: {
+ case 59: {
Expect(100, t); // "End"
- currentState = 60;
+ currentState = 62;
break;
}
- case 58: {
+ case 60: {
Expect(141, t); // "Module"
- currentState = 62;
+ currentState = 64;
break;
}
- case 59: {
+ case 61: {
Expect(71, t); // "Class"
- currentState = 62;
+ currentState = 64;
break;
}
- case 60: {
+ case 62: {
if (t.kind == 141) {
- goto case 58;
+ goto case 60;
} else {
- goto case 61;
+ goto case 63;
}
}
- case 61: {
+ case 63: {
if (t.kind == 71) {
- goto case 59;
+ goto case 61;
} else {
Error(t);
- goto case 62;
+ goto case 64;
}
}
- case 62: {
- stateStack.Push(63);
+ case 64: {
+ stateStack.Push(65);
goto case 13; // StatementTerminator
}
- case 63: {
- PopContext();
- currentState = stateStack.Pop();
- goto switchlbl;
- }
- case 64: { // start of MemberDeclaration
- PushContext(Context.Member);
- goto case 65;
- }
case 65: {
- stateStack.Push(66);
- goto case 68; // SubOrFunctionDeclaration
- }
- case 66: {
- PopContext();
+ PopContext();
currentState = stateStack.Pop();
goto switchlbl;
}
+ case 66: { // start of MemberDeclaration
+ PushContext(Context.Member);
+ goto case 68;
+ }
case 67: {
stateStack.Push(68);
goto case 24; // AttributeBlock
}
- case 68: { // start of SubOrFunctionDeclaration
+ case 68: {
if (t.kind == 28) {
goto case 67;
} else {
@@ -411,7 +408,7 @@ int currentState = 1;
}
case 69: {
stateStack.Push(70);
- goto case 342; // MemberModifier
+ goto case 361; // MemberModifier
}
case 70: {
if (set[7, t.kind]) {
@@ -421,24 +418,22 @@ int currentState = 1;
}
}
case 71: {
- Expect(195, t); // "Sub"
- currentState = 75;
- break;
+ stateStack.Push(75);
+ goto case 99; // MemberVariableOrConstantDeclaration
}
case 72: {
- Expect(114, t); // "Function"
- currentState = 75;
- break;
+ stateStack.Push(75);
+ goto case 78; // SubOrFunctionDeclaration
}
case 73: {
- if (t.kind == 195) {
+ if (set[8, t.kind]) {
goto case 71;
} else {
goto case 74;
}
}
case 74: {
- if (t.kind == 114) {
+ if (t.kind == 114 || t.kind == 195) {
goto case 72;
} else {
Error(t);
@@ -446,202 +441,206 @@ int currentState = 1;
}
}
case 75: {
- PushContext(Context.IdentifierExpected);
- goto case 76;
+ PopContext();
+ currentState = stateStack.Pop();
+ goto switchlbl;
}
case 76: {
- currentState = 77;
+ Expect(195, t); // "Sub"
+ currentState = 80;
break;
}
case 77: {
- PopContext();
- goto case 82;
- }
- case 78: {
- Expect(25, t); // "("
+ Expect(114, t); // "Function"
currentState = 80;
break;
}
- case 79: {
- stateStack.Push(81);
- goto case 93; // ParameterList
- }
- case 80: {
- if (set[8, t.kind]) {
+ case 78: { // start of SubOrFunctionDeclaration
+ if (t.kind == 195) {
+ goto case 76;
+ } else {
goto case 79;
+ }
+ }
+ case 79: {
+ if (t.kind == 114) {
+ goto case 77;
} else {
- goto case 81;
+ Error(t);
+ goto case 80;
}
}
+ case 80: {
+ PushContext(Context.IdentifierExpected);
+ goto case 81;
+ }
case 81: {
- Expect(26, t); // ")"
- currentState = 85;
+ currentState = 82;
break;
}
case 82: {
- if (t.kind == 25) {
- goto case 78;
- } else {
- goto case 85;
- }
+ PopContext();
+ goto case 87;
}
case 83: {
- Expect(50, t); // "As"
- currentState = 84;
+ Expect(25, t); // "("
+ currentState = 85;
break;
}
case 84: {
stateStack.Push(86);
- goto case 177; // TypeName
+ goto case 108; // ParameterList
}
case 85: {
- if (t.kind == 50) {
- goto case 83;
+ if (set[9, t.kind]) {
+ goto case 84;
} else {
goto case 86;
}
}
case 86: {
- stateStack.Push(87);
- goto case 108; // Block
- }
- case 87: {
- Expect(100, t); // "End"
+ Expect(26, t); // ")"
currentState = 90;
break;
}
+ case 87: {
+ if (t.kind == 25) {
+ goto case 83;
+ } else {
+ goto case 90;
+ }
+ }
case 88: {
- Expect(195, t); // "Sub"
- currentState = 92;
+ Expect(50, t); // "As"
+ currentState = 89;
break;
}
case 89: {
- Expect(114, t); // "Function"
- currentState = 92;
- break;
+ stateStack.Push(91);
+ goto case 196; // TypeName
}
case 90: {
- if (t.kind == 195) {
+ if (t.kind == 50) {
goto case 88;
} else {
goto case 91;
}
}
case 91: {
- if (t.kind == 114) {
- goto case 89;
- } else {
- Error(t);
- goto case 92;
- }
+ stateStack.Push(92);
+ goto case 123; // Block
}
case 92: {
- goto case 13; // StatementTerminator
+ Expect(100, t); // "End"
+ currentState = 95;
+ break;
}
- case 93: { // start of ParameterList
- stateStack.Push(96);
- goto case 98; // Parameter
+ case 93: {
+ Expect(195, t); // "Sub"
+ currentState = 97;
+ break;
}
case 94: {
- Expect(12, t); // ","
- currentState = 95;
+ Expect(114, t); // "Function"
+ currentState = 97;
break;
}
case 95: {
- stateStack.Push(96);
- goto case 98; // Parameter
+ if (t.kind == 195) {
+ goto case 93;
+ } else {
+ goto case 96;
+ }
}
case 96: {
- if (t.kind == 12) {
+ if (t.kind == 114) {
goto case 94;
} else {
- currentState = stateStack.Pop();
- goto switchlbl;
+ Error(t);
+ goto case 97;
}
}
case 97: {
- stateStack.Push(98);
- goto case 24; // AttributeBlock
+ goto case 13; // StatementTerminator
}
- case 98: { // start of Parameter
- if (t.kind == 28) {
- goto case 97;
+ case 98: {
+ Expect(75, t); // "Const"
+ currentState = 100;
+ break;
+ }
+ case 99: { // start of MemberVariableOrConstantDeclaration
+ if (t.kind == 75) {
+ goto case 98;
} else {
goto case 100;
}
}
- case 99: {
- stateStack.Push(100);
- goto case 358; // ParameterModifier
- }
case 100: {
- if (set[9, t.kind]) {
- goto case 99;
- } else {
- goto case 101;
- }
+ stateStack.Push(103);
+ goto case 287; // Identifier
}
case 101: {
- stateStack.Push(104);
- goto case 268; // Identifier
- }
- case 102: {
Expect(50, t); // "As"
- currentState = 103;
+ currentState = 102;
break;
}
- case 103: {
- stateStack.Push(107);
- goto case 177; // TypeName
+ case 102: {
+ stateStack.Push(106);
+ goto case 196; // TypeName
}
- case 104: {
+ case 103: {
if (t.kind == 50) {
- goto case 102;
+ goto case 101;
} else {
- goto case 107;
+ goto case 106;
}
}
- case 105: {
+ case 104: {
Expect(10, t); // "="
- currentState = 106;
+ currentState = 105;
break;
}
- case 106: {
- goto case 117; // Expression
+ case 105: {
+ stateStack.Push(107);
+ goto case 132; // Expression
}
- case 107: {
+ case 106: {
if (t.kind == 10) {
- goto case 105;
+ goto case 104;
} else {
- currentState = stateStack.Pop();
- goto switchlbl;
+ goto case 107;
}
}
- case 108: { // start of Block
- PushContext(Context.Body);
- goto case 109;
+ case 107: {
+ goto case 13; // StatementTerminator
}
- case 109: {
+ case 108: { // start of ParameterList
stateStack.Push(111);
- goto case 13; // StatementTerminator
+ goto case 113; // Parameter
+ }
+ case 109: {
+ Expect(12, t); // ","
+ currentState = 110;
+ break;
}
case 110: {
stateStack.Push(111);
- goto case 13; // StatementTerminator
+ goto case 113; // Parameter
}
case 111: {
- if (t.kind == 1 || t.kind == 11) {
- goto case 110;
+ if (t.kind == 12) {
+ goto case 109;
} else {
- goto case 113;
+ currentState = stateStack.Pop();
+ goto switchlbl;
}
}
case 112: {
stateStack.Push(113);
- goto case 266; // Statement
+ goto case 24; // AttributeBlock
}
- case 113: {
- if (set[10, t.kind]) {
+ case 113: { // start of Parameter
+ if (t.kind == 28) {
goto case 112;
} else {
goto case 115;
@@ -649,1466 +648,1585 @@ int currentState = 1;
}
case 114: {
stateStack.Push(115);
- goto case 13; // StatementTerminator
+ goto case 381; // ParameterModifier
}
case 115: {
- if (t.kind == 1 || t.kind == 11) {
+ if (set[10, t.kind]) {
goto case 114;
} else {
goto case 116;
}
}
case 116: {
- PopContext();
- currentState = stateStack.Pop();
- goto switchlbl;
+ stateStack.Push(119);
+ goto case 287; // Identifier
}
- case 117: { // start of Expression
- isExpressionStart = true;
- goto case 124;
+ case 117: {
+ Expect(50, t); // "As"
+ currentState = 118;
+ break;
}
case 118: {
- stateStack.Push(119);
- goto case 202; // Literal
+ stateStack.Push(122);
+ goto case 196; // TypeName
}
case 119: {
- isExpressionStart = false;
- currentState = stateStack.Pop();
- goto switchlbl;
+ if (t.kind == 50) {
+ goto case 117;
+ } else {
+ goto case 122;
+ }
}
case 120: {
- Expect(25, t); // "("
+ Expect(10, t); // "="
currentState = 121;
break;
}
case 121: {
- isExpressionStart = false;
- goto case 122;
+ goto case 132; // Expression
}
case 122: {
- stateStack.Push(123);
- goto case 117; // Expression
+ if (t.kind == 10) {
+ goto case 120;
+ } else {
+ currentState = stateStack.Pop();
+ goto switchlbl;
+ }
+ }
+ case 123: { // start of Block
+ PushContext(Context.Body);
+ goto case 124;
+ }
+ case 124: {
+ stateStack.Push(126);
+ goto case 13; // StatementTerminator
+ }
+ case 125: {
+ stateStack.Push(126);
+ goto case 13; // StatementTerminator
+ }
+ case 126: {
+ if (t.kind == 1 || t.kind == 11) {
+ goto case 125;
+ } else {
+ goto case 128;
+ }
+ }
+ case 127: {
+ stateStack.Push(128);
+ goto case 285; // Statement
+ }
+ case 128: {
+ if (set[11, t.kind]) {
+ goto case 127;
+ } else {
+ goto case 130;
+ }
+ }
+ case 129: {
+ stateStack.Push(130);
+ goto case 13; // StatementTerminator
+ }
+ case 130: {
+ if (t.kind == 1 || t.kind == 11) {
+ goto case 129;
+ } else {
+ goto case 131;
+ }
+ }
+ case 131: {
+ PopContext();
+ currentState = stateStack.Pop();
+ goto switchlbl;
+ }
+ case 132: { // start of Expression
+ isExpressionStart = true;
+ goto case 139;
+ }
+ case 133: {
+ stateStack.Push(134);
+ goto case 221; // Literal
+ }
+ case 134: {
+ isExpressionStart = false;
+ currentState = stateStack.Pop();
+ goto switchlbl;
}
- case 123: {
+ case 135: {
+ Expect(25, t); // "("
+ currentState = 136;
+ break;
+ }
+ case 136: {
+ isExpressionStart = false;
+ goto case 137;
+ }
+ case 137: {
+ stateStack.Push(138);
+ goto case 132; // Expression
+ }
+ case 138: {
Expect(26, t); // ")"
currentState = stateStack.Pop();
break;
}
- case 124: {
- if (set[11, t.kind]) {
- goto case 118;
+ case 139: {
+ if (set[12, t.kind]) {
+ goto case 133;
} else {
- goto case 125;
+ goto case 140;
}
}
- case 125: {
+ case 140: {
if (t.kind == 25) {
- goto case 120;
+ goto case 135;
} else {
- goto case 136;
+ goto case 151;
}
}
- case 126: {
- stateStack.Push(127);
- goto case 268; // Identifier
+ case 141: {
+ stateStack.Push(142);
+ goto case 287; // Identifier
}
- case 127: {
- isExpressionStart = false;
- goto case 135;
+ case 142: {
+ isExpressionStart = false;
+ goto case 150;
}
- case 128: {
+ case 143: {
Expect(25, t); // "("
- currentState = 129;
+ currentState = 144;
break;
}
- case 129: {
+ case 144: {
Expect(155, t); // "Of"
- currentState = 130;
+ currentState = 145;
break;
}
- case 130: {
- stateStack.Push(133);
- goto case 177; // TypeName
+ case 145: {
+ stateStack.Push(148);
+ goto case 196; // TypeName
}
- case 131: {
+ case 146: {
Expect(12, t); // ","
- currentState = 132;
+ currentState = 147;
break;
}
- case 132: {
- stateStack.Push(133);
- goto case 177; // TypeName
+ case 147: {
+ stateStack.Push(148);
+ goto case 196; // TypeName
}
- case 133: {
+ case 148: {
if (t.kind == 12) {
- goto case 131;
+ goto case 146;
} else {
- goto case 134;
+ goto case 149;
}
}
- case 134: {
+ case 149: {
Expect(26, t); // ")"
currentState = stateStack.Pop();
break;
}
- case 135: {
+ case 150: {
if (t.kind == 25) {
- goto case 128;
+ goto case 143;
} else {
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 136: {
- if (set[12, t.kind]) {
- goto case 126;
+ case 151: {
+ if (set[13, t.kind]) {
+ goto case 141;
} else {
- goto case 140;
+ goto case 155;
}
}
- case 137: {
+ case 152: {
Expect(44, t); // "AddressOf"
- currentState = 138;
+ currentState = 153;
break;
}
- case 138: {
- isExpressionStart = false;
- goto case 139;
+ case 153: {
+ isExpressionStart = false;
+ goto case 154;
}
- case 139: {
- goto case 117; // Expression
+ case 154: {
+ goto case 132; // Expression
}
- case 140: {
+ case 155: {
if (t.kind == 44) {
- goto case 137;
+ goto case 152;
} else {
- goto case 142;
+ goto case 161;
}
}
- case 141: {
+ case 156: {
Expect(28, t); // "<"
- currentState = stateStack.Pop();
+ currentState = 157;
break;
}
- case 142: {
+ case 157: {
+ PushContext(Context.Xml);
+ goto case 158;
+ }
+ case 158: {
+ currentState = 159;
+ break;
+ }
+ case 159: {
+ Expect(27, t); // ">"
+ currentState = 160;
+ break;
+ }
+ case 160: {
+ PopContext();
+ currentState = stateStack.Pop();
+ goto switchlbl;
+ }
+ case 161: {
if (t.kind == 28) {
- goto case 141;
+ goto case 156;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 143: {
+ case 162: {
Expect(58, t); // "Byte"
currentState = stateStack.Pop();
break;
}
- case 144: {
+ case 163: {
Expect(181, t); // "SByte"
currentState = stateStack.Pop();
break;
}
- case 145: { // start of PrimitiveTypeName
+ case 164: { // start of PrimitiveTypeName
if (t.kind == 58) {
- goto case 143;
+ goto case 162;
} else {
- goto case 146;
+ goto case 165;
}
}
- case 146: {
+ case 165: {
if (t.kind == 181) {
- goto case 144;
+ goto case 163;
} else {
- goto case 148;
+ goto case 167;
}
}
- case 147: {
+ case 166: {
Expect(210, t); // "UShort"
currentState = stateStack.Pop();
break;
}
- case 148: {
+ case 167: {
if (t.kind == 210) {
- goto case 147;
+ goto case 166;
} else {
- goto case 150;
+ goto case 169;
}
}
- case 149: {
+ case 168: {
Expect(186, t); // "Short"
currentState = stateStack.Pop();
break;
}
- case 150: {
+ case 169: {
if (t.kind == 186) {
- goto case 149;
+ goto case 168;
} else {
- goto case 152;
+ goto case 171;
}
}
- case 151: {
+ case 170: {
Expect(206, t); // "UInteger"
currentState = stateStack.Pop();
break;
}
- case 152: {
+ case 171: {
if (t.kind == 206) {
- goto case 151;
+ goto case 170;
} else {
- goto case 154;
+ goto case 173;
}
}
- case 153: {
+ case 172: {
Expect(128, t); // "Integer"
currentState = stateStack.Pop();
break;
}
- case 154: {
+ case 173: {
if (t.kind == 128) {
- goto case 153;
+ goto case 172;
} else {
- goto case 156;
+ goto case 175;
}
}
- case 155: {
+ case 174: {
Expect(207, t); // "ULong"
currentState = stateStack.Pop();
break;
}
- case 156: {
+ case 175: {
if (t.kind == 207) {
- goto case 155;
+ goto case 174;
} else {
- goto case 158;
+ goto case 177;
}
}
- case 157: {
+ case 176: {
Expect(137, t); // "Long"
currentState = stateStack.Pop();
break;
}
- case 158: {
+ case 177: {
if (t.kind == 137) {
- goto case 157;
+ goto case 176;
} else {
- goto case 160;
+ goto case 179;
}
}
- case 159: {
+ case 178: {
Expect(187, t); // "Single"
currentState = stateStack.Pop();
break;
}
- case 160: {
+ case 179: {
if (t.kind == 187) {
- goto case 159;
+ goto case 178;
} else {
- goto case 162;
+ goto case 181;
}
}
- case 161: {
+ case 180: {
Expect(96, t); // "Double"
currentState = stateStack.Pop();
break;
}
- case 162: {
+ case 181: {
if (t.kind == 96) {
- goto case 161;
+ goto case 180;
} else {
- goto case 164;
+ goto case 183;
}
}
- case 163: {
+ case 182: {
Expect(87, t); // "Decimal"
currentState = stateStack.Pop();
break;
}
- case 164: {
+ case 183: {
if (t.kind == 87) {
- goto case 163;
+ goto case 182;
} else {
- goto case 166;
+ goto case 185;
}
}
- case 165: {
+ case 184: {
Expect(55, t); // "Boolean"
currentState = stateStack.Pop();
break;
}
- case 166: {
+ case 185: {
if (t.kind == 55) {
- goto case 165;
+ goto case 184;
} else {
- goto case 168;
+ goto case 187;
}
}
- case 167: {
+ case 186: {
Expect(86, t); // "Date"
currentState = stateStack.Pop();
break;
}
- case 168: {
+ case 187: {
if (t.kind == 86) {
- goto case 167;
+ goto case 186;
} else {
- goto case 170;
+ goto case 189;
}
}
- case 169: {
+ case 188: {
Expect(69, t); // "Char"
currentState = stateStack.Pop();
break;
}
- case 170: {
+ case 189: {
if (t.kind == 69) {
- goto case 169;
+ goto case 188;
} else {
- goto case 172;
+ goto case 191;
}
}
- case 171: {
+ case 190: {
Expect(193, t); // "String"
currentState = stateStack.Pop();
break;
}
- case 172: {
+ case 191: {
if (t.kind == 193) {
- goto case 171;
+ goto case 190;
} else {
- goto case 174;
+ goto case 193;
}
}
- case 173: {
+ case 192: {
Expect(154, t); // "Object"
currentState = stateStack.Pop();
break;
}
- case 174: {
+ case 193: {
if (t.kind == 154) {
- goto case 173;
+ goto case 192;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 175: {
+ case 194: {
Expect(117, t); // "Global"
- currentState = 182;
+ currentState = 201;
break;
}
- case 176: {
- stateStack.Push(182);
- goto case 268; // Identifier
+ case 195: {
+ stateStack.Push(201);
+ goto case 287; // Identifier
}
- case 177: { // start of TypeName
+ case 196: { // start of TypeName
if (t.kind == 117) {
- goto case 175;
+ goto case 194;
} else {
- goto case 178;
+ goto case 197;
}
}
- case 178: {
- if (set[12, t.kind]) {
- goto case 176;
+ case 197: {
+ if (set[13, t.kind]) {
+ goto case 195;
} else {
- goto case 180;
+ goto case 199;
}
}
- case 179: {
- stateStack.Push(182);
- goto case 145; // PrimitiveTypeName
+ case 198: {
+ stateStack.Push(201);
+ goto case 164; // PrimitiveTypeName
}
- case 180: {
- if (set[13, t.kind]) {
- goto case 179;
+ case 199: {
+ if (set[14, t.kind]) {
+ goto case 198;
} else {
Error(t);
- goto case 182;
+ goto case 201;
}
}
- case 181: {
- stateStack.Push(182);
- goto case 188; // TypeSuffix
+ case 200: {
+ stateStack.Push(201);
+ goto case 207; // TypeSuffix
}
- case 182: {
+ case 201: {
if (t.kind == 25) {
- goto case 181;
+ goto case 200;
} else {
- goto case 187;
+ goto case 206;
}
}
- case 183: {
+ case 202: {
Expect(16, t); // "."
- currentState = 184;
+ currentState = 203;
break;
}
- case 184: {
- stateStack.Push(186);
- goto case 199; // IdentifierOrKeyword
+ case 203: {
+ stateStack.Push(205);
+ goto case 218; // IdentifierOrKeyword
}
- case 185: {
- stateStack.Push(186);
- goto case 188; // TypeSuffix
+ case 204: {
+ stateStack.Push(205);
+ goto case 207; // TypeSuffix
}
- case 186: {
+ case 205: {
if (t.kind == 25) {
- goto case 185;
+ goto case 204;
} else {
- goto case 187;
+ goto case 206;
}
}
- case 187: {
+ case 206: {
if (t.kind == 16) {
- goto case 183;
+ goto case 202;
} else {
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 188: { // start of TypeSuffix
+ case 207: { // start of TypeSuffix
Expect(25, t); // "("
- currentState = 196;
+ currentState = 215;
break;
}
- case 189: {
+ case 208: {
Expect(155, t); // "Of"
- currentState = 190;
+ currentState = 209;
break;
}
- case 190: {
- stateStack.Push(193);
- goto case 177; // TypeName
+ case 209: {
+ stateStack.Push(212);
+ goto case 196; // TypeName
}
- case 191: {
+ case 210: {
Expect(12, t); // ","
- currentState = 192;
+ currentState = 211;
break;
}
- case 192: {
- stateStack.Push(193);
- goto case 177; // TypeName
+ case 211: {
+ stateStack.Push(212);
+ goto case 196; // TypeName
}
- case 193: {
+ case 212: {
if (t.kind == 12) {
- goto case 191;
+ goto case 210;
} else {
- goto case 198;
+ goto case 217;
}
}
- case 194: {
+ case 213: {
Expect(12, t); // ","
- currentState = 195;
+ currentState = 214;
break;
}
- case 195: {
+ case 214: {
if (t.kind == 12) {
- goto case 194;
+ goto case 213;
} else {
- goto case 198;
+ goto case 217;
}
}
- case 196: {
+ case 215: {
if (t.kind == 155) {
- goto case 189;
+ goto case 208;
} else {
- goto case 197;
+ goto case 216;
}
}
- case 197: {
+ case 216: {
if (t.kind == 12 || t.kind == 26) {
- goto case 195;
+ goto case 214;
} else {
Error(t);
- goto case 198;
+ goto case 217;
}
}
- case 198: {
+ case 217: {
Expect(26, t); // ")"
currentState = stateStack.Pop();
break;
}
- case 199: { // start of IdentifierOrKeyword
+ case 218: { // start of IdentifierOrKeyword
currentState = stateStack.Pop();
break;
}
- case 200: {
+ case 219: {
Expect(3, t); // LiteralString
currentState = stateStack.Pop();
break;
}
- case 201: {
+ case 220: {
Expect(4, t); // LiteralCharacter
currentState = stateStack.Pop();
break;
}
- case 202: { // start of Literal
+ case 221: { // start of Literal
if (t.kind == 3) {
- goto case 200;
+ goto case 219;
} else {
- goto case 203;
+ goto case 222;
}
}
- case 203: {
+ case 222: {
if (t.kind == 4) {
- goto case 201;
+ goto case 220;
} else {
- goto case 205;
+ goto case 224;
}
}
- case 204: {
+ case 223: {
Expect(5, t); // LiteralInteger
currentState = stateStack.Pop();
break;
}
- case 205: {
+ case 224: {
if (t.kind == 5) {
- goto case 204;
+ goto case 223;
} else {
- goto case 207;
+ goto case 226;
}
}
- case 206: {
+ case 225: {
Expect(6, t); // LiteralDouble
currentState = stateStack.Pop();
break;
}
- case 207: {
+ case 226: {
if (t.kind == 6) {
- goto case 206;
+ goto case 225;
} else {
- goto case 209;
+ goto case 228;
}
}
- case 208: {
+ case 227: {
Expect(7, t); // LiteralSingle
currentState = stateStack.Pop();
break;
}
- case 209: {
+ case 228: {
if (t.kind == 7) {
- goto case 208;
+ goto case 227;
} else {
- goto case 211;
+ goto case 230;
}
}
- case 210: {
+ case 229: {
Expect(8, t); // LiteralDecimal
currentState = stateStack.Pop();
break;
}
- case 211: {
+ case 230: {
if (t.kind == 8) {
- goto case 210;
+ goto case 229;
} else {
- goto case 213;
+ goto case 232;
}
}
- case 212: {
+ case 231: {
Expect(9, t); // LiteralDate
currentState = stateStack.Pop();
break;
}
- case 213: {
+ case 232: {
if (t.kind == 9) {
- goto case 212;
+ goto case 231;
} else {
- goto case 215;
+ goto case 234;
}
}
- case 214: {
+ case 233: {
Expect(202, t); // "True"
currentState = stateStack.Pop();
break;
}
- case 215: {
+ case 234: {
if (t.kind == 202) {
- goto case 214;
+ goto case 233;
} else {
- goto case 217;
+ goto case 236;
}
}
- case 216: {
+ case 235: {
Expect(109, t); // "False"
currentState = stateStack.Pop();
break;
}
- case 217: {
+ case 236: {
if (t.kind == 109) {
- goto case 216;
+ goto case 235;
} else {
- goto case 219;
+ goto case 238;
}
}
- case 218: {
+ case 237: {
Expect(151, t); // "Nothing"
currentState = stateStack.Pop();
break;
}
- case 219: {
+ case 238: {
if (t.kind == 151) {
- goto case 218;
+ goto case 237;
} else {
- goto case 221;
+ goto case 240;
}
}
- case 220: {
+ case 239: {
Expect(139, t); // "Me"
currentState = stateStack.Pop();
break;
}
- case 221: {
+ case 240: {
if (t.kind == 139) {
- goto case 220;
+ goto case 239;
} else {
- goto case 223;
+ goto case 242;
}
}
- case 222: {
+ case 241: {
Expect(144, t); // "MyBase"
currentState = stateStack.Pop();
break;
}
- case 223: {
+ case 242: {
if (t.kind == 144) {
- goto case 222;
+ goto case 241;
} else {
- goto case 225;
+ goto case 244;
}
}
- case 224: {
+ case 243: {
Expect(145, t); // "MyClass"
currentState = stateStack.Pop();
break;
}
- case 225: {
+ case 244: {
if (t.kind == 145) {
- goto case 224;
+ goto case 243;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 226: {
- stateStack.Push(230);
- goto case 268; // Identifier
+ case 245: {
+ stateStack.Push(249);
+ goto case 287; // Identifier
}
- case 227: {
+ case 246: {
Expect(5, t); // LiteralInteger
- currentState = 230;
+ currentState = 249;
break;
}
- case 228: {
- if (set[12, t.kind]) {
- goto case 226;
+ case 247: {
+ if (set[13, t.kind]) {
+ goto case 245;
} else {
- goto case 229;
+ goto case 248;
}
}
- case 229: {
+ case 248: {
if (t.kind == 5) {
- goto case 227;
+ goto case 246;
} else {
Error(t);
- goto case 230;
+ goto case 249;
}
}
- case 230: {
+ case 249: {
Expect(11, t); // ":"
currentState = stateStack.Pop();
break;
}
- case 231: {
+ case 250: {
Expect(92, t); // "Dim"
- currentState = 237;
+ currentState = 256;
break;
}
- case 232: {
+ case 251: {
Expect(189, t); // "Static"
- currentState = 237;
+ currentState = 256;
break;
}
- case 233: {
+ case 252: {
if (t.kind == 92) {
- goto case 231;
+ goto case 250;
} else {
- goto case 234;
+ goto case 253;
}
}
- case 234: {
+ case 253: {
if (t.kind == 189) {
- goto case 232;
+ goto case 251;
} else {
- goto case 236;
+ goto case 255;
}
}
- case 235: {
+ case 254: {
Expect(75, t); // "Const"
- currentState = 237;
+ currentState = 256;
break;
}
- case 236: {
+ case 255: {
if (t.kind == 75) {
- goto case 235;
+ goto case 254;
} else {
Error(t);
- goto case 237;
+ goto case 256;
}
}
- case 237: {
- stateStack.Push(239);
- goto case 268; // Identifier
+ case 256: {
+ stateStack.Push(258);
+ goto case 287; // Identifier
}
- case 238: {
+ case 257: {
Expect(21, t); // "?"
- currentState = 244;
+ currentState = 263;
break;
}
- case 239: {
+ case 258: {
if (t.kind == 21) {
- goto case 238;
+ goto case 257;
} else {
- goto case 244;
+ goto case 263;
}
}
- case 240: {
+ case 259: {
Expect(25, t); // "("
- currentState = 242;
+ currentState = 261;
break;
}
- case 241: {
+ case 260: {
Expect(12, t); // ","
- currentState = 242;
+ currentState = 261;
break;
}
- case 242: {
+ case 261: {
if (t.kind == 12) {
- goto case 241;
+ goto case 260;
} else {
- goto case 243;
+ goto case 262;
}
}
- case 243: {
+ case 262: {
Expect(26, t); // ")"
- currentState = 254;
+ currentState = 273;
break;
}
- case 244: {
+ case 263: {
if (t.kind == 25) {
- goto case 240;
+ goto case 259;
} else {
- goto case 254;
+ goto case 273;
}
}
- case 245: {
+ case 264: {
Expect(12, t); // ","
- currentState = 246;
+ currentState = 265;
break;
}
- case 246: {
- stateStack.Push(248);
- goto case 268; // Identifier
+ case 265: {
+ stateStack.Push(267);
+ goto case 287; // Identifier
}
- case 247: {
+ case 266: {
Expect(21, t); // "?"
- currentState = 253;
+ currentState = 272;
break;
}
- case 248: {
+ case 267: {
if (t.kind == 21) {
- goto case 247;
+ goto case 266;
} else {
- goto case 253;
+ goto case 272;
}
}
- case 249: {
+ case 268: {
Expect(25, t); // "("
- currentState = 251;
+ currentState = 270;
break;
}
- case 250: {
+ case 269: {
Expect(12, t); // ","
- currentState = 251;
+ currentState = 270;
break;
}
- case 251: {
+ case 270: {
if (t.kind == 12) {
- goto case 250;
+ goto case 269;
} else {
- goto case 252;
+ goto case 271;
}
}
- case 252: {
+ case 271: {
Expect(26, t); // ")"
- currentState = 254;
+ currentState = 273;
break;
}
- case 253: {
+ case 272: {
if (t.kind == 25) {
- goto case 249;
+ goto case 268;
} else {
- goto case 254;
+ goto case 273;
}
}
- case 254: {
+ case 273: {
if (t.kind == 12) {
- goto case 245;
+ goto case 264;
} else {
- goto case 262;
+ goto case 281;
}
}
- case 255: {
+ case 274: {
Expect(50, t); // "As"
- currentState = 257;
+ currentState = 276;
break;
}
- case 256: {
+ case 275: {
Expect(148, t); // "New"
- currentState = 258;
+ currentState = 277;
break;
}
- case 257: {
+ case 276: {
if (t.kind == 148) {
- goto case 256;
+ goto case 275;
} else {
- goto case 258;
+ goto case 277;
}
}
- case 258: {
- stateStack.Push(261);
- goto case 177; // TypeName
+ case 277: {
+ stateStack.Push(280);
+ goto case 196; // TypeName
}
- case 259: {
+ case 278: {
Expect(25, t); // "("
- currentState = 260;
+ currentState = 279;
break;
}
- case 260: {
+ case 279: {
Expect(26, t); // ")"
- currentState = 265;
+ currentState = 284;
break;
}
- case 261: {
+ case 280: {
if (t.kind == 25) {
- goto case 259;
+ goto case 278;
} else {
- goto case 265;
+ goto case 284;
}
}
- case 262: {
+ case 281: {
if (t.kind == 50) {
- goto case 255;
+ goto case 274;
} else {
- goto case 265;
+ goto case 284;
}
}
- case 263: {
+ case 282: {
Expect(10, t); // "="
- currentState = 264;
+ currentState = 283;
break;
}
- case 264: {
- goto case 117; // Expression
+ case 283: {
+ goto case 132; // Expression
}
- case 265: {
+ case 284: {
if (t.kind == 10) {
- goto case 263;
+ goto case 282;
} else {
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 266: { // start of Statement
- if (set[14, t.kind]) {
- goto case 228;
+ case 285: { // start of Statement
+ if (set[15, t.kind]) {
+ goto case 247;
} else {
- goto case 267;
+ goto case 286;
}
}
- case 267: {
+ case 286: {
if (t.kind == 75 || t.kind == 92 || t.kind == 189) {
- goto case 233;
+ goto case 252;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 268: { // start of Identifier
- PushContext(Context.IdentifierExpected);
- goto case 271;
+ case 287: { // start of Identifier
+ PushContext(Context.IdentifierExpected);
+ goto case 290;
}
- case 269: {
- stateStack.Push(273);
- goto case 276; // IdentifierForFieldDeclaration
+ case 288: {
+ stateStack.Push(292);
+ goto case 295; // IdentifierForFieldDeclaration
}
- case 270: {
+ case 289: {
Expect(85, t); // "Custom"
- currentState = 273;
+ currentState = 292;
break;
}
- case 271: {
- if (set[15, t.kind]) {
- goto case 269;
+ case 290: {
+ if (set[16, t.kind]) {
+ goto case 288;
} else {
- goto case 272;
+ goto case 291;
}
}
- case 272: {
+ case 291: {
if (t.kind == 85) {
- goto case 270;
+ goto case 289;
} else {
Error(t);
- goto case 273;
+ goto case 292;
}
}
- case 273: {
- PopContext();
+ case 292: {
+ PopContext();
currentState = stateStack.Pop();
goto switchlbl;
}
- case 274: {
+ case 293: {
Expect(2, t); // ident
currentState = stateStack.Pop();
break;
}
- case 275: {
+ case 294: {
Expect(45, t); // "Aggregate"
currentState = stateStack.Pop();
break;
}
- case 276: { // start of IdentifierForFieldDeclaration
+ case 295: { // start of IdentifierForFieldDeclaration
if (t.kind == 2) {
- goto case 274;
+ goto case 293;
} else {
- goto case 277;
+ goto case 296;
}
}
- case 277: {
+ case 296: {
if (t.kind == 45) {
- goto case 275;
+ goto case 294;
} else {
- goto case 279;
+ goto case 298;
}
}
- case 278: {
+ case 297: {
Expect(49, t); // "Ansi"
currentState = stateStack.Pop();
break;
}
- case 279: {
+ case 298: {
if (t.kind == 49) {
- goto case 278;
+ goto case 297;
} else {
- goto case 281;
+ goto case 300;
}
}
- case 280: {
+ case 299: {
Expect(51, t); // "Ascending"
currentState = stateStack.Pop();
break;
}
- case 281: {
+ case 300: {
if (t.kind == 51) {
- goto case 280;
+ goto case 299;
} else {
- goto case 283;
+ goto case 302;
}
}
- case 282: {
+ case 301: {
Expect(52, t); // "Assembly"
currentState = stateStack.Pop();
break;
}
- case 283: {
+ case 302: {
if (t.kind == 52) {
- goto case 282;
+ goto case 301;
} else {
- goto case 285;
+ goto case 304;
}
}
- case 284: {
+ case 303: {
Expect(53, t); // "Auto"
currentState = stateStack.Pop();
break;
}
- case 285: {
+ case 304: {
if (t.kind == 53) {
- goto case 284;
+ goto case 303;
} else {
- goto case 287;
+ goto case 306;
}
}
- case 286: {
+ case 305: {
Expect(54, t); // "Binary"
currentState = stateStack.Pop();
break;
}
- case 287: {
+ case 306: {
if (t.kind == 54) {
- goto case 286;
+ goto case 305;
} else {
- goto case 289;
+ goto case 308;
}
}
- case 288: {
+ case 307: {
Expect(57, t); // "By"
currentState = stateStack.Pop();
break;
}
- case 289: {
+ case 308: {
if (t.kind == 57) {
- goto case 288;
+ goto case 307;
} else {
- goto case 291;
+ goto case 310;
}
}
- case 290: {
+ case 309: {
Expect(74, t); // "Compare"
currentState = stateStack.Pop();
break;
}
- case 291: {
+ case 310: {
if (t.kind == 74) {
- goto case 290;
+ goto case 309;
} else {
- goto case 293;
+ goto case 312;
}
}
- case 292: {
+ case 311: {
Expect(91, t); // "Descending"
currentState = stateStack.Pop();
break;
}
- case 293: {
+ case 312: {
if (t.kind == 91) {
- goto case 292;
+ goto case 311;
} else {
- goto case 295;
+ goto case 314;
}
}
- case 294: {
+ case 313: {
Expect(94, t); // "Distinct"
currentState = stateStack.Pop();
break;
}
- case 295: {
+ case 314: {
if (t.kind == 94) {
- goto case 294;
+ goto case 313;
} else {
- goto case 297;
+ goto case 316;
}
}
- case 296: {
+ case 315: {
Expect(103, t); // "Equals"
currentState = stateStack.Pop();
break;
}
- case 297: {
+ case 316: {
if (t.kind == 103) {
- goto case 296;
+ goto case 315;
} else {
- goto case 299;
+ goto case 318;
}
}
- case 298: {
+ case 317: {
Expect(108, t); // "Explicit"
currentState = stateStack.Pop();
break;
}
- case 299: {
+ case 318: {
if (t.kind == 108) {
- goto case 298;
+ goto case 317;
} else {
- goto case 301;
+ goto case 320;
}
}
- case 300: {
+ case 319: {
Expect(113, t); // "From"
currentState = stateStack.Pop();
break;
}
- case 301: {
+ case 320: {
if (t.kind == 113) {
- goto case 300;
+ goto case 319;
} else {
- goto case 303;
+ goto case 322;
}
}
- case 302: {
+ case 321: {
Expect(120, t); // "Group"
currentState = stateStack.Pop();
break;
}
- case 303: {
+ case 322: {
if (t.kind == 120) {
- goto case 302;
+ goto case 321;
} else {
- goto case 305;
+ goto case 324;
}
}
- case 304: {
+ case 323: {
Expect(126, t); // "Infer"
currentState = stateStack.Pop();
break;
}
- case 305: {
+ case 324: {
if (t.kind == 126) {
- goto case 304;
+ goto case 323;
} else {
- goto case 307;
+ goto case 326;
}
}
- case 306: {
+ case 325: {
Expect(130, t); // "Into"
currentState = stateStack.Pop();
break;
}
- case 307: {
+ case 326: {
if (t.kind == 130) {
- goto case 306;
+ goto case 325;
} else {
- goto case 309;
+ goto case 328;
}
}
- case 308: {
+ case 327: {
Expect(133, t); // "Join"
currentState = stateStack.Pop();
break;
}
- case 309: {
+ case 328: {
if (t.kind == 133) {
- goto case 308;
+ goto case 327;
} else {
- goto case 311;
+ goto case 330;
}
}
- case 310: {
+ case 329: {
Expect(156, t); // "Off"
currentState = stateStack.Pop();
break;
}
- case 311: {
+ case 330: {
if (t.kind == 156) {
- goto case 310;
+ goto case 329;
} else {
- goto case 313;
+ goto case 332;
}
}
- case 312: {
+ case 331: {
Expect(162, t); // "Order"
currentState = stateStack.Pop();
break;
}
- case 313: {
+ case 332: {
if (t.kind == 162) {
- goto case 312;
+ goto case 331;
} else {
- goto case 315;
+ goto case 334;
}
}
- case 314: {
+ case 333: {
Expect(169, t); // "Preserve"
currentState = stateStack.Pop();
break;
}
- case 315: {
+ case 334: {
if (t.kind == 169) {
- goto case 314;
+ goto case 333;
} else {
- goto case 317;
+ goto case 336;
}
}
- case 316: {
+ case 335: {
Expect(188, t); // "Skip"
currentState = stateStack.Pop();
break;
}
- case 317: {
+ case 336: {
if (t.kind == 188) {
- goto case 316;
+ goto case 335;
} else {
- goto case 319;
+ goto case 338;
}
}
- case 318: {
+ case 337: {
Expect(197, t); // "Take"
currentState = stateStack.Pop();
break;
}
- case 319: {
+ case 338: {
if (t.kind == 197) {
- goto case 318;
+ goto case 337;
} else {
- goto case 321;
+ goto case 340;
}
}
- case 320: {
+ case 339: {
Expect(198, t); // "Text"
currentState = stateStack.Pop();
break;
}
- case 321: {
+ case 340: {
if (t.kind == 198) {
- goto case 320;
+ goto case 339;
} else {
- goto case 323;
+ goto case 342;
}
}
- case 322: {
+ case 341: {
Expect(208, t); // "Unicode"
currentState = stateStack.Pop();
break;
}
- case 323: {
+ case 342: {
if (t.kind == 208) {
- goto case 322;
+ goto case 341;
} else {
- goto case 325;
+ goto case 344;
}
}
- case 324: {
+ case 343: {
Expect(209, t); // "Until"
currentState = stateStack.Pop();
break;
}
- case 325: {
+ case 344: {
if (t.kind == 209) {
- goto case 324;
+ goto case 343;
} else {
- goto case 327;
+ goto case 346;
}
}
- case 326: {
+ case 345: {
Expect(215, t); // "Where"
currentState = stateStack.Pop();
break;
}
- case 327: {
+ case 346: {
if (t.kind == 215) {
- goto case 326;
+ goto case 345;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 328: {
+ case 347: {
Expect(173, t); // "Public"
currentState = stateStack.Pop();
break;
}
- case 329: {
+ case 348: {
Expect(112, t); // "Friend"
currentState = stateStack.Pop();
break;
}
- case 330: { // start of AccessModifier
+ case 349: { // start of AccessModifier
if (t.kind == 173) {
- goto case 328;
+ goto case 347;
} else {
- goto case 331;
+ goto case 350;
}
}
- case 331: {
+ case 350: {
if (t.kind == 112) {
- goto case 329;
+ goto case 348;
} else {
- goto case 333;
+ goto case 352;
}
}
- case 332: {
+ case 351: {
Expect(172, t); // "Protected"
currentState = stateStack.Pop();
break;
}
- case 333: {
+ case 352: {
if (t.kind == 172) {
- goto case 332;
+ goto case 351;
} else {
- goto case 335;
+ goto case 354;
}
}
- case 334: {
+ case 353: {
Expect(170, t); // "Private"
currentState = stateStack.Pop();
break;
}
- case 335: {
+ case 354: {
if (t.kind == 170) {
- goto case 334;
+ goto case 353;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 336: {
- goto case 330; // AccessModifier
+ case 355: {
+ goto case 349; // AccessModifier
}
- case 337: {
+ case 356: {
Expect(184, t); // "Shadows"
currentState = stateStack.Pop();
break;
}
- case 338: { // start of TypeModifier
- if (set[16, t.kind]) {
- goto case 336;
+ case 357: { // start of TypeModifier
+ if (set[17, t.kind]) {
+ goto case 355;
} else {
- goto case 339;
+ goto case 358;
}
}
- case 339: {
+ case 358: {
if (t.kind == 184) {
- goto case 337;
+ goto case 356;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 340: {
- goto case 330; // AccessModifier
+ case 359: {
+ goto case 349; // AccessModifier
}
- case 341: {
+ case 360: {
Expect(184, t); // "Shadows"
currentState = stateStack.Pop();
break;
}
- case 342: { // start of MemberModifier
- if (set[16, t.kind]) {
- goto case 340;
+ case 361: { // start of MemberModifier
+ if (set[17, t.kind]) {
+ goto case 359;
} else {
- goto case 343;
+ goto case 362;
}
}
- case 343: {
+ case 362: {
if (t.kind == 184) {
- goto case 341;
+ goto case 360;
} else {
- goto case 345;
+ goto case 364;
}
}
- case 344: {
+ case 363: {
Expect(185, t); // "Shared"
currentState = stateStack.Pop();
break;
}
- case 345: {
+ case 364: {
if (t.kind == 185) {
- goto case 344;
+ goto case 363;
} else {
- goto case 347;
+ goto case 366;
}
}
- case 346: {
+ case 365: {
Expect(165, t); // "Overridable"
currentState = stateStack.Pop();
break;
}
- case 347: {
+ case 366: {
if (t.kind == 165) {
- goto case 346;
+ goto case 365;
} else {
- goto case 349;
+ goto case 368;
}
}
- case 348: {
+ case 367: {
Expect(153, t); // "NotOverridable"
currentState = stateStack.Pop();
break;
}
- case 349: {
+ case 368: {
if (t.kind == 153) {
- goto case 348;
+ goto case 367;
} else {
- goto case 351;
+ goto case 370;
}
}
- case 350: {
+ case 369: {
Expect(166, t); // "Overrides"
currentState = stateStack.Pop();
break;
}
- case 351: {
+ case 370: {
if (t.kind == 166) {
- goto case 350;
+ goto case 369;
} else {
- goto case 353;
+ goto case 372;
}
}
- case 352: {
+ case 371: {
Expect(164, t); // "Overloads"
currentState = stateStack.Pop();
break;
}
- case 353: {
+ case 372: {
if (t.kind == 164) {
- goto case 352;
+ goto case 371;
} else {
- goto case 355;
+ goto case 374;
}
}
- case 354: {
+ case 373: {
Expect(168, t); // "Partial"
currentState = stateStack.Pop();
break;
}
- case 355: {
+ case 374: {
if (t.kind == 168) {
- goto case 354;
+ goto case 373;
+ } else {
+ goto case 376;
+ }
+ }
+ case 375: {
+ Expect(219, t); // "WithEvents"
+ currentState = stateStack.Pop();
+ break;
+ }
+ case 376: {
+ if (t.kind == 219) {
+ goto case 375;
+ } else {
+ goto case 378;
+ }
+ }
+ case 377: {
+ Expect(92, t); // "Dim"
+ currentState = stateStack.Pop();
+ break;
+ }
+ case 378: {
+ if (t.kind == 92) {
+ goto case 377;
} else {
Error(t);
currentState = stateStack.Pop();
goto switchlbl;
}
}
- case 356: {
+ case 379: {
Expect(59, t); // "ByVal"
currentState = stateStack.Pop();
break;
}
- case 357: {
+ case 380: {
Expect(56, t); // "ByRef"
currentState = stateStack.Pop();
break;
}
- case 358: { // start of ParameterModifier
+ case 381: { // start of ParameterModifier
if (t.kind == 59) {
- goto case 356;
+ goto case 379;
} else {
- goto case 359;
+ goto case 382;
}
}
- case 359: {
+ case 382: {
if (t.kind == 56) {
- goto case 357;
+ goto case 380;
} else {
- goto case 361;
+ goto case 384;
}
}
- case 360: {
+ case 383: {
Expect(160, t); // "Optional"
currentState = stateStack.Pop();
break;
}
- case 361: {
+ case 384: {
if (t.kind == 160) {
- goto case 360;
+ goto case 383;
} else {
- goto case 363;
+ goto case 386;
}
}
- case 362: {
+ case 385: {
Expect(167, t); // "ParamArray"
currentState = stateStack.Pop();
break;
}
- case 363: {
+ case 386: {
if (t.kind == 167) {
- goto case 362;
+ goto case 385;
} else {
Error(t);
currentState = stateStack.Pop();
@@ -2126,8 +2244,9 @@ int currentState = 1;
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
- {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, T,T,T,x, T,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
- {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, T,T,T,x, T,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
+ {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, T,T,T,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, T,x,x,x, x,x,T,x, T,T,T,x, T,T,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, T,x,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,T, x,x,x,x},
+ {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, T,T,T,x, T,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x},
+ {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x},
{x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, T,T,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, T,x,T,x, x,x,x,T, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
{x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x},
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/PushParser.frame b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/PushParser.frame
index 2263e99b14..a0563c23fa 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/PushParser.frame
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/PushParser.frame
@@ -25,9 +25,6 @@ If not otherwise stated, any source code generated by Coco/R (other than
Coco/R itself) does not fall under the GNU General Public License.
----------------------------------------------------------------------*/
-->begin
-using System;
-using System.Collections.Generic;
-
-->namespace
partial class ExpressionFinder {
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Test/ParserTests.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Test/ParserTests.cs
index 4427c4afec..1746ef6f30 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Test/ParserTests.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Test/ParserTests.cs
@@ -58,6 +58,131 @@ exit Global
);
}
+ [Test]
+ public void MemberWithXmlLiteral()
+ {
+ RunTest(
+ @"Class Test
+ Private xml As XElement =
+
+ Public Sub New()
+ Dim x =
+ End Sub
+End Class
+",
+ @"enter Global
+ enter Type
+ enter Member
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Xml
+ exit Xml
+ exit Member
+ enter Member
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Body
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Xml
+ exit Xml
+ exit Body
+ exit Member
+ exit Type
+exit Global
+"
+ );
+ }
+
+ [Test]
+ public void GlobalAttributeTest()
+ {
+ RunTest(
+ @"
+Class Test
+ Public Sub New()
+ Dim x = 5
+ End Sub
+End Class
+",
+ @"enter Global
+ enter Attribute
+ exit Attribute
+ enter Type
+ enter Member
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Body
+ enter IdentifierExpected
+ exit IdentifierExpected
+ exit Body
+ exit Member
+ exit Type
+exit Global
+"
+ );
+ }
+
+ [Test]
+ public void ClassAttributeTest()
+ {
+ RunTest(
+ @"
+Class Test
+ Public Sub New()
+ Dim x = 5
+ End Sub
+End Class
+",
+ @"enter Global
+ enter Attribute
+ exit Attribute
+ enter Type
+ enter Member
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Body
+ enter IdentifierExpected
+ exit IdentifierExpected
+ exit Body
+ exit Member
+ exit Type
+exit Global
+"
+ );
+ }
+
+ [Test]
+ public void MethodAttributeTest()
+ {
+ RunTest(
+ @"Class Test
+
+ Public Sub New()
+ Dim x = 5
+ End Sub
+End Class
+",
+ @"enter Global
+ enter Type
+ enter Member
+ enter Attribute
+ exit Attribute
+ enter IdentifierExpected
+ exit IdentifierExpected
+ enter Body
+ enter IdentifierExpected
+ exit IdentifierExpected
+ exit Body
+ exit Member
+ exit Type
+exit Global
+"
+ );
+ }
+
void RunTest(string code, string expectedOutput)
{
ExpressionFinder p = new ExpressionFinder();