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();