diff --git a/src/Libraries/NRefactory/NRefactory.sln b/src/Libraries/NRefactory/NRefactory.sln
index e3fd317960..7ddfa25391 100644
--- a/src/Libraries/NRefactory/NRefactory.sln
+++ b/src/Libraries/NRefactory/NRefactory.sln
@@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
-# SharpDevelop 2.0.0.1
+# SharpDevelop 2.0.0.260
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
diff --git a/src/Libraries/NRefactory/Project/NRefactory.csproj b/src/Libraries/NRefactory/Project/NRefactory.csproj
index 51137ee3f8..585c2a88af 100644
--- a/src/Libraries/NRefactory/Project/NRefactory.csproj
+++ b/src/Libraries/NRefactory/Project/NRefactory.csproj
@@ -98,7 +98,6 @@
-
@@ -190,6 +189,7 @@
+
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Enums.cs b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Enums.cs
index 862adb641f..77e5a13709 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Enums.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Enums.cs
@@ -37,9 +37,12 @@ namespace ICSharpCode.NRefactory.Parser.AST
Overloads = 0x10000, // VB specific
WithEvents = 0x20000, // VB specific
Default = 0x40000, // VB specific
+ Narrowing = 0x80000, // VB specific
+ Widening = 0x100000, // VB specific
// Modifier scopes
None = 0x0000,
+
Classes = New | Public | Protected | Internal | Private | Abstract | Sealed | Partial | Static,
VBModules = Private | Public | Protected | Internal,
VBStructures = Private | Public | Protected | Internal | New,
@@ -50,6 +53,9 @@ namespace ICSharpCode.NRefactory.Parser.AST
VBExternalMethods = Private | Public | Protected | Internal | New | Overloads,
VBEvents = Private | Public | Protected | Internal | New | Overloads,
VBProperties = VBMethods | Default,
+ VBCustomEvents = Private | Public | Protected | Internal | New | Overloads,
+ VBOperators = Public | Static | Overloads | New | Widening | Narrowing,
+
// this is not documented in the spec
VBInterfaceEvents = New,
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/OperatorDeclaration.cs b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/OperatorDeclaration.cs
similarity index 90%
rename from src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/OperatorDeclaration.cs
rename to src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/OperatorDeclaration.cs
index 8232f0abd5..06ae828d6d 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/AST/CSharp/TypeLevel/OperatorDeclaration.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/OperatorDeclaration.cs
@@ -26,6 +26,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
Multiply,
Divide,
Modulus,
+ Concat,
Not,
BitNot,
@@ -50,13 +51,20 @@ namespace ICSharpCode.NRefactory.Parser.AST
True,
False,
-
+ // VB specific
+ IsTrue,
+ IsFalse,
+ Like,
+ Power,
+ CType,
+ DivideInteger
}
+
public class OperatorDeclaration : MethodDeclaration
{
ConversionType conversionType = ConversionType.None;
TypeReference convertToType;
-
+ List returnTypeAttributes = new List();
OverloadableOperatorType overloadableOperator = OverloadableOperatorType.None;
public ConversionType ConversionType {
@@ -68,6 +76,16 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
+ public List ReturnTypeAttributes
+ {
+ get {
+ return returnTypeAttributes;
+ }
+ set {
+ returnTypeAttributes = value;
+ }
+ }
+
public TypeReference ConvertToType {
get {
return convertToType;
@@ -77,7 +95,6 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
-
public OverloadableOperatorType OverloadableOperator {
get {
return overloadableOperator;
@@ -122,7 +139,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
) : base(null, modifier, typeReference, parameters, attributes)
{
this.overloadableOperator = overloadableOperator;
- convertToType = TypeReference.Null;
+ convertToType = TypeReference.Null;
}
public override object AcceptVisitor(IASTVisitor visitor, object data)
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
index 40b5365a8c..0f64993c0b 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
@@ -592,25 +592,25 @@ m, attributes);
}
void Qualident(
-#line 818 "cs.ATG"
+#line 817 "cs.ATG"
out string qualident) {
Expect(1);
-#line 820 "cs.ATG"
+#line 819 "cs.ATG"
qualidentBuilder.Length = 0; qualidentBuilder.Append(t.val);
while (
-#line 821 "cs.ATG"
+#line 820 "cs.ATG"
DotAndIdent()) {
Expect(14);
Expect(1);
-#line 821 "cs.ATG"
+#line 820 "cs.ATG"
qualidentBuilder.Append('.');
qualidentBuilder.Append(t.val);
}
-#line 824 "cs.ATG"
+#line 823 "cs.ATG"
qualident = qualidentBuilder.ToString();
}
@@ -704,43 +704,43 @@ out expr);
}
void Expr(
-#line 1868 "cs.ATG"
+#line 1867 "cs.ATG"
out Expression expr) {
-#line 1869 "cs.ATG"
+#line 1868 "cs.ATG"
expr = null; Expression expr1 = null, expr2 = null;
UnaryExpr(
-#line 1871 "cs.ATG"
+#line 1870 "cs.ATG"
out expr);
if (StartOf(5)) {
ConditionalOrExpr(
-#line 1874 "cs.ATG"
+#line 1873 "cs.ATG"
ref expr);
if (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 1874 "cs.ATG"
+#line 1873 "cs.ATG"
out expr1);
Expect(9);
Expr(
-#line 1874 "cs.ATG"
+#line 1873 "cs.ATG"
out expr2);
-#line 1874 "cs.ATG"
+#line 1873 "cs.ATG"
expr = new ConditionalExpression(expr, expr1, expr2);
}
} else if (StartOf(6)) {
-#line 1876 "cs.ATG"
+#line 1875 "cs.ATG"
AssignmentOperatorType op; Expression val;
AssignmentOperator(
-#line 1876 "cs.ATG"
+#line 1875 "cs.ATG"
out op);
Expr(
-#line 1876 "cs.ATG"
+#line 1875 "cs.ATG"
out val);
-#line 1876 "cs.ATG"
+#line 1875 "cs.ATG"
expr = new AssignmentExpression(expr, op, val);
} else SynErr(127);
}
@@ -816,76 +816,76 @@ out attribute);
}
void TypeModifier(
-#line 994 "cs.ATG"
+#line 993 "cs.ATG"
Modifiers m) {
switch (la.kind) {
case 87: {
lexer.NextToken();
-#line 996 "cs.ATG"
+#line 995 "cs.ATG"
m.Add(Modifier.New);
break;
}
case 96: {
lexer.NextToken();
-#line 997 "cs.ATG"
+#line 996 "cs.ATG"
m.Add(Modifier.Public);
break;
}
case 95: {
lexer.NextToken();
-#line 998 "cs.ATG"
+#line 997 "cs.ATG"
m.Add(Modifier.Protected);
break;
}
case 82: {
lexer.NextToken();
-#line 999 "cs.ATG"
+#line 998 "cs.ATG"
m.Add(Modifier.Internal);
break;
}
case 94: {
lexer.NextToken();
-#line 1000 "cs.ATG"
+#line 999 "cs.ATG"
m.Add(Modifier.Private);
break;
}
case 117: {
lexer.NextToken();
-#line 1001 "cs.ATG"
+#line 1000 "cs.ATG"
m.Add(Modifier.Unsafe);
break;
}
case 47: {
lexer.NextToken();
-#line 1002 "cs.ATG"
+#line 1001 "cs.ATG"
m.Add(Modifier.Abstract);
break;
}
case 101: {
lexer.NextToken();
-#line 1003 "cs.ATG"
+#line 1002 "cs.ATG"
m.Add(Modifier.Sealed);
break;
}
case 105: {
lexer.NextToken();
-#line 1004 "cs.ATG"
+#line 1003 "cs.ATG"
m.Add(Modifier.Static);
break;
}
case 1: {
lexer.NextToken();
-#line 1005 "cs.ATG"
+#line 1004 "cs.ATG"
if (t.val == "partial") { m.Add(Modifier.Partial); }
break;
}
@@ -916,31 +916,30 @@ Modifiers m, List attributes) {
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location;
-
newType.Type = Types.Class;
Expect(1);
-#line 720 "cs.ATG"
+#line 719 "cs.ATG"
newType.Name = t.val;
if (la.kind == 22) {
TypeParameterList(
-#line 723 "cs.ATG"
+#line 722 "cs.ATG"
templates);
}
if (la.kind == 9) {
ClassBase(
-#line 725 "cs.ATG"
+#line 724 "cs.ATG"
out names);
-#line 725 "cs.ATG"
+#line 724 "cs.ATG"
newType.BaseTypes = names;
}
while (
-#line 728 "cs.ATG"
+#line 727 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 728 "cs.ATG"
+#line 727 "cs.ATG"
templates);
}
ClassBody();
@@ -948,18 +947,18 @@ templates);
lexer.NextToken();
}
-#line 731 "cs.ATG"
+#line 730 "cs.ATG"
newType.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else if (StartOf(7)) {
-#line 734 "cs.ATG"
+#line 733 "cs.ATG"
m.Check(Modifier.StructsInterfacesEnumsDelegates);
if (la.kind == 107) {
lexer.NextToken();
-#line 735 "cs.ATG"
+#line 734 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates;
newType.StartLocation = t.Location;
@@ -969,26 +968,26 @@ templates);
Expect(1);
-#line 742 "cs.ATG"
+#line 741 "cs.ATG"
newType.Name = t.val;
if (la.kind == 22) {
TypeParameterList(
-#line 745 "cs.ATG"
+#line 744 "cs.ATG"
templates);
}
if (la.kind == 9) {
StructInterfaces(
-#line 747 "cs.ATG"
+#line 746 "cs.ATG"
out names);
-#line 747 "cs.ATG"
+#line 746 "cs.ATG"
newType.BaseTypes = names;
}
while (
-#line 750 "cs.ATG"
+#line 749 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 750 "cs.ATG"
+#line 749 "cs.ATG"
templates);
}
StructBody();
@@ -996,14 +995,14 @@ templates);
lexer.NextToken();
}
-#line 754 "cs.ATG"
+#line 753 "cs.ATG"
newType.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else if (la.kind == 81) {
lexer.NextToken();
-#line 758 "cs.ATG"
+#line 757 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates;
compilationUnit.AddChild(newType);
@@ -1013,26 +1012,26 @@ templates);
Expect(1);
-#line 765 "cs.ATG"
+#line 764 "cs.ATG"
newType.Name = t.val;
if (la.kind == 22) {
TypeParameterList(
-#line 768 "cs.ATG"
+#line 767 "cs.ATG"
templates);
}
if (la.kind == 9) {
InterfaceBase(
-#line 770 "cs.ATG"
+#line 769 "cs.ATG"
out names);
-#line 770 "cs.ATG"
+#line 769 "cs.ATG"
newType.BaseTypes = names;
}
while (
-#line 773 "cs.ATG"
+#line 772 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 773 "cs.ATG"
+#line 772 "cs.ATG"
templates);
}
InterfaceBody();
@@ -1040,14 +1039,14 @@ templates);
lexer.NextToken();
}
-#line 776 "cs.ATG"
+#line 775 "cs.ATG"
newType.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else if (la.kind == 66) {
lexer.NextToken();
-#line 780 "cs.ATG"
+#line 779 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
@@ -1056,15 +1055,15 @@ templates);
Expect(1);
-#line 786 "cs.ATG"
+#line 785 "cs.ATG"
newType.Name = t.val;
if (la.kind == 9) {
lexer.NextToken();
IntegralType(
-#line 787 "cs.ATG"
+#line 786 "cs.ATG"
out name);
-#line 787 "cs.ATG"
+#line 786 "cs.ATG"
newType.BaseTypes.Add(new TypeReference(name));
}
EnumBody();
@@ -1072,62 +1071,62 @@ out name);
lexer.NextToken();
}
-#line 790 "cs.ATG"
+#line 789 "cs.ATG"
newType.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else {
lexer.NextToken();
-#line 794 "cs.ATG"
+#line 793 "cs.ATG"
DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
templates = delegateDeclr.Templates;
delegateDeclr.StartLocation = t.Location;
if (
-#line 798 "cs.ATG"
+#line 797 "cs.ATG"
NotVoidPointer()) {
Expect(121);
-#line 798 "cs.ATG"
+#line 797 "cs.ATG"
delegateDeclr.ReturnType = new TypeReference("void", 0, null);
} else if (StartOf(8)) {
Type(
-#line 799 "cs.ATG"
+#line 798 "cs.ATG"
out type);
-#line 799 "cs.ATG"
+#line 798 "cs.ATG"
delegateDeclr.ReturnType = type;
} else SynErr(129);
Expect(1);
-#line 801 "cs.ATG"
+#line 800 "cs.ATG"
delegateDeclr.Name = t.val;
if (la.kind == 22) {
TypeParameterList(
-#line 804 "cs.ATG"
+#line 803 "cs.ATG"
templates);
}
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 806 "cs.ATG"
+#line 805 "cs.ATG"
p);
-#line 806 "cs.ATG"
+#line 805 "cs.ATG"
delegateDeclr.Parameters = p;
}
Expect(20);
while (
-#line 810 "cs.ATG"
+#line 809 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 810 "cs.ATG"
+#line 809 "cs.ATG"
templates);
}
Expect(11);
-#line 812 "cs.ATG"
+#line 811 "cs.ATG"
delegateDeclr.EndLocation = t.Location;
compilationUnit.AddChild(delegateDeclr);
@@ -1136,90 +1135,90 @@ templates);
}
void TypeParameterList(
-#line 2251 "cs.ATG"
+#line 2250 "cs.ATG"
List templates) {
-#line 2253 "cs.ATG"
+#line 2252 "cs.ATG"
AttributeSection section;
List attributes = new List();
Expect(22);
while (la.kind == 17) {
AttributeSection(
-#line 2257 "cs.ATG"
+#line 2256 "cs.ATG"
out section);
-#line 2257 "cs.ATG"
+#line 2256 "cs.ATG"
attributes.Add(section);
}
Expect(1);
-#line 2258 "cs.ATG"
+#line 2257 "cs.ATG"
templates.Add(new TemplateDefinition(t.val, attributes));
while (la.kind == 13) {
lexer.NextToken();
while (la.kind == 17) {
AttributeSection(
-#line 2259 "cs.ATG"
+#line 2258 "cs.ATG"
out section);
-#line 2259 "cs.ATG"
+#line 2258 "cs.ATG"
attributes.Add(section);
}
Expect(1);
-#line 2260 "cs.ATG"
+#line 2259 "cs.ATG"
templates.Add(new TemplateDefinition(t.val, attributes));
}
Expect(21);
}
void ClassBase(
-#line 827 "cs.ATG"
+#line 826 "cs.ATG"
out List names) {
-#line 829 "cs.ATG"
+#line 828 "cs.ATG"
TypeReference typeRef;
names = new List();
Expect(9);
ClassType(
-#line 833 "cs.ATG"
+#line 832 "cs.ATG"
out typeRef);
-#line 833 "cs.ATG"
+#line 832 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 13) {
lexer.NextToken();
TypeName(
-#line 834 "cs.ATG"
+#line 833 "cs.ATG"
out typeRef);
-#line 834 "cs.ATG"
+#line 833 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
void TypeParameterConstraintsClause(
-#line 2264 "cs.ATG"
+#line 2263 "cs.ATG"
List templates) {
-#line 2265 "cs.ATG"
+#line 2264 "cs.ATG"
string name = ""; TypeReference type;
Expect(1);
-#line 2267 "cs.ATG"
+#line 2266 "cs.ATG"
if (t.val != "where") Error("where expected");
Expect(1);
-#line 2268 "cs.ATG"
+#line 2267 "cs.ATG"
name = t.val;
Expect(9);
TypeParameterConstraintsClauseBase(
-#line 2270 "cs.ATG"
+#line 2269 "cs.ATG"
out type);
-#line 2271 "cs.ATG"
+#line 2270 "cs.ATG"
TemplateDefinition td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -1232,10 +1231,10 @@ out type);
while (la.kind == 13) {
lexer.NextToken();
TypeParameterConstraintsClauseBase(
-#line 2280 "cs.ATG"
+#line 2279 "cs.ATG"
out type);
-#line 2281 "cs.ATG"
+#line 2280 "cs.ATG"
td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -1250,114 +1249,114 @@ out type);
void ClassBody() {
-#line 838 "cs.ATG"
+#line 837 "cs.ATG"
AttributeSection section;
Expect(15);
while (StartOf(10)) {
-#line 841 "cs.ATG"
+#line 840 "cs.ATG"
List attributes = new List();
Modifiers m = new Modifiers();
while (la.kind == 17) {
AttributeSection(
-#line 844 "cs.ATG"
+#line 843 "cs.ATG"
out section);
-#line 844 "cs.ATG"
+#line 843 "cs.ATG"
attributes.Add(section);
}
while (StartOf(11)) {
MemberModifier(
-#line 845 "cs.ATG"
+#line 844 "cs.ATG"
m);
}
ClassMemberDecl(
-#line 846 "cs.ATG"
+#line 845 "cs.ATG"
m, attributes);
}
Expect(16);
}
void StructInterfaces(
-#line 851 "cs.ATG"
+#line 850 "cs.ATG"
out List names) {
-#line 853 "cs.ATG"
+#line 852 "cs.ATG"
TypeReference typeRef;
names = new List();
Expect(9);
TypeName(
-#line 857 "cs.ATG"
+#line 856 "cs.ATG"
out typeRef);
-#line 857 "cs.ATG"
+#line 856 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 13) {
lexer.NextToken();
TypeName(
-#line 858 "cs.ATG"
+#line 857 "cs.ATG"
out typeRef);
-#line 858 "cs.ATG"
+#line 857 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
void StructBody() {
-#line 862 "cs.ATG"
+#line 861 "cs.ATG"
AttributeSection section;
Expect(15);
while (StartOf(12)) {
-#line 865 "cs.ATG"
+#line 864 "cs.ATG"
List attributes = new List();
Modifiers m = new Modifiers();
while (la.kind == 17) {
AttributeSection(
-#line 868 "cs.ATG"
+#line 867 "cs.ATG"
out section);
-#line 868 "cs.ATG"
+#line 867 "cs.ATG"
attributes.Add(section);
}
while (StartOf(11)) {
MemberModifier(
-#line 869 "cs.ATG"
+#line 868 "cs.ATG"
m);
}
StructMemberDecl(
-#line 870 "cs.ATG"
+#line 869 "cs.ATG"
m, attributes);
}
Expect(16);
}
void InterfaceBase(
-#line 875 "cs.ATG"
+#line 874 "cs.ATG"
out List names) {
-#line 877 "cs.ATG"
+#line 876 "cs.ATG"
TypeReference typeRef;
names = new List();
Expect(9);
TypeName(
-#line 881 "cs.ATG"
+#line 880 "cs.ATG"
out typeRef);
-#line 881 "cs.ATG"
+#line 880 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 13) {
lexer.NextToken();
TypeName(
-#line 882 "cs.ATG"
+#line 881 "cs.ATG"
out typeRef);
-#line 882 "cs.ATG"
+#line 881 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
@@ -1371,72 +1370,72 @@ out typeRef);
}
void IntegralType(
-#line 1016 "cs.ATG"
+#line 1015 "cs.ATG"
out string name) {
-#line 1016 "cs.ATG"
+#line 1015 "cs.ATG"
name = "";
switch (la.kind) {
case 100: {
lexer.NextToken();
-#line 1018 "cs.ATG"
+#line 1017 "cs.ATG"
name = "sbyte";
break;
}
case 52: {
lexer.NextToken();
-#line 1019 "cs.ATG"
+#line 1018 "cs.ATG"
name = "byte";
break;
}
case 102: {
lexer.NextToken();
-#line 1020 "cs.ATG"
+#line 1019 "cs.ATG"
name = "short";
break;
}
case 118: {
lexer.NextToken();
-#line 1021 "cs.ATG"
+#line 1020 "cs.ATG"
name = "ushort";
break;
}
case 80: {
lexer.NextToken();
-#line 1022 "cs.ATG"
+#line 1021 "cs.ATG"
name = "int";
break;
}
case 114: {
lexer.NextToken();
-#line 1023 "cs.ATG"
+#line 1022 "cs.ATG"
name = "uint";
break;
}
case 85: {
lexer.NextToken();
-#line 1024 "cs.ATG"
+#line 1023 "cs.ATG"
name = "long";
break;
}
case 115: {
lexer.NextToken();
-#line 1025 "cs.ATG"
+#line 1024 "cs.ATG"
name = "ulong";
break;
}
case 55: {
lexer.NextToken();
-#line 1026 "cs.ATG"
+#line 1025 "cs.ATG"
name = "char";
break;
}
@@ -1446,25 +1445,25 @@ out string name) {
void EnumBody() {
-#line 888 "cs.ATG"
+#line 887 "cs.ATG"
FieldDeclaration f;
Expect(15);
if (la.kind == 1 || la.kind == 17) {
EnumMemberDecl(
-#line 890 "cs.ATG"
+#line 889 "cs.ATG"
out f);
-#line 890 "cs.ATG"
+#line 889 "cs.ATG"
compilationUnit.AddChild(f);
while (
-#line 891 "cs.ATG"
+#line 890 "cs.ATG"
NotFinalComma()) {
Expect(13);
EnumMemberDecl(
-#line 891 "cs.ATG"
+#line 890 "cs.ATG"
out f);
-#line 891 "cs.ATG"
+#line 890 "cs.ATG"
compilationUnit.AddChild(f);
}
if (la.kind == 13) {
@@ -1475,62 +1474,62 @@ out f);
}
void Type(
-#line 896 "cs.ATG"
+#line 895 "cs.ATG"
out TypeReference type) {
-#line 898 "cs.ATG"
+#line 897 "cs.ATG"
string name;
int pointer = 0;
type = null;
if (la.kind == 1 || la.kind == 89 || la.kind == 106) {
ClassType(
-#line 903 "cs.ATG"
+#line 902 "cs.ATG"
out type);
} else if (StartOf(14)) {
SimpleType(
-#line 904 "cs.ATG"
+#line 903 "cs.ATG"
out name);
-#line 904 "cs.ATG"
+#line 903 "cs.ATG"
type = new TypeReference(name);
} else if (la.kind == 121) {
lexer.NextToken();
Expect(6);
-#line 905 "cs.ATG"
+#line 904 "cs.ATG"
pointer = 1; type = new TypeReference("void");
} else SynErr(132);
-#line 906 "cs.ATG"
+#line 905 "cs.ATG"
List r = new List();
while (
-#line 908 "cs.ATG"
+#line 907 "cs.ATG"
IsPointerOrDims()) {
-#line 908 "cs.ATG"
+#line 907 "cs.ATG"
int i = 0;
if (la.kind == 6) {
lexer.NextToken();
-#line 909 "cs.ATG"
+#line 908 "cs.ATG"
++pointer;
} else if (la.kind == 17) {
lexer.NextToken();
while (la.kind == 13) {
lexer.NextToken();
-#line 910 "cs.ATG"
+#line 909 "cs.ATG"
++i;
}
Expect(18);
-#line 910 "cs.ATG"
+#line 909 "cs.ATG"
r.Add(i);
} else SynErr(133);
}
-#line 913 "cs.ATG"
+#line 912 "cs.ATG"
if (type != null) {
type.RankSpecifier = r.ToArray();
type.PointerNestingLevel = pointer;
@@ -1539,28 +1538,28 @@ IsPointerOrDims()) {
}
void FormalParameterList(
-#line 949 "cs.ATG"
+#line 948 "cs.ATG"
List parameter) {
-#line 952 "cs.ATG"
+#line 951 "cs.ATG"
ParameterDeclarationExpression p;
AttributeSection section;
List attributes = new List();
while (la.kind == 17) {
AttributeSection(
-#line 957 "cs.ATG"
+#line 956 "cs.ATG"
out section);
-#line 957 "cs.ATG"
+#line 956 "cs.ATG"
attributes.Add(section);
}
if (StartOf(15)) {
FixedParameter(
-#line 959 "cs.ATG"
+#line 958 "cs.ATG"
out p);
-#line 959 "cs.ATG"
+#line 958 "cs.ATG"
bool paramsFound = false;
p.Attributes = attributes;
parameter.Add(p);
@@ -1568,96 +1567,96 @@ out p);
while (la.kind == 13) {
lexer.NextToken();
-#line 964 "cs.ATG"
+#line 963 "cs.ATG"
attributes = new List(); if (paramsFound) Error("params array must be at end of parameter list");
while (la.kind == 17) {
AttributeSection(
-#line 965 "cs.ATG"
+#line 964 "cs.ATG"
out section);
-#line 965 "cs.ATG"
+#line 964 "cs.ATG"
attributes.Add(section);
}
if (StartOf(15)) {
FixedParameter(
-#line 967 "cs.ATG"
+#line 966 "cs.ATG"
out p);
-#line 967 "cs.ATG"
+#line 966 "cs.ATG"
p.Attributes = attributes; parameter.Add(p);
} else if (la.kind == 93) {
ParameterArray(
-#line 968 "cs.ATG"
+#line 967 "cs.ATG"
out p);
-#line 968 "cs.ATG"
+#line 967 "cs.ATG"
paramsFound = true; p.Attributes = attributes; parameter.Add(p);
} else SynErr(134);
}
} else if (la.kind == 93) {
ParameterArray(
-#line 971 "cs.ATG"
+#line 970 "cs.ATG"
out p);
-#line 971 "cs.ATG"
+#line 970 "cs.ATG"
p.Attributes = attributes; parameter.Add(p);
} else SynErr(135);
}
void ClassType(
-#line 1008 "cs.ATG"
+#line 1007 "cs.ATG"
out TypeReference typeRef) {
-#line 1009 "cs.ATG"
+#line 1008 "cs.ATG"
TypeReference r; typeRef = null;
if (la.kind == 1) {
TypeName(
-#line 1011 "cs.ATG"
+#line 1010 "cs.ATG"
out r);
-#line 1011 "cs.ATG"
+#line 1010 "cs.ATG"
typeRef = r;
} else if (la.kind == 89) {
lexer.NextToken();
-#line 1012 "cs.ATG"
+#line 1011 "cs.ATG"
typeRef = new TypeReference("object");
} else if (la.kind == 106) {
lexer.NextToken();
-#line 1013 "cs.ATG"
+#line 1012 "cs.ATG"
typeRef = new TypeReference("string");
} else SynErr(136);
}
void TypeName(
-#line 2216 "cs.ATG"
+#line 2215 "cs.ATG"
out TypeReference typeRef) {
-#line 2217 "cs.ATG"
+#line 2216 "cs.ATG"
List typeArguments = null;
string alias = null;
string qualident;
if (
-#line 2222 "cs.ATG"
+#line 2221 "cs.ATG"
la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) {
lexer.NextToken();
-#line 2223 "cs.ATG"
+#line 2222 "cs.ATG"
alias = t.val;
Expect(10);
}
Qualident(
-#line 2226 "cs.ATG"
+#line 2225 "cs.ATG"
out qualident);
if (la.kind == 22) {
TypeArgumentList(
-#line 2227 "cs.ATG"
+#line 2226 "cs.ATG"
out typeArguments);
}
-#line 2229 "cs.ATG"
+#line 2228 "cs.ATG"
if (alias == null) {
typeRef = new TypeReference(qualident, typeArguments);
} else if (alias == "global") {
@@ -1670,104 +1669,104 @@ out typeArguments);
}
void MemberModifier(
-#line 1029 "cs.ATG"
+#line 1028 "cs.ATG"
Modifiers m) {
switch (la.kind) {
case 47: {
lexer.NextToken();
-#line 1031 "cs.ATG"
+#line 1030 "cs.ATG"
m.Add(Modifier.Abstract);
break;
}
case 69: {
lexer.NextToken();
-#line 1032 "cs.ATG"
+#line 1031 "cs.ATG"
m.Add(Modifier.Extern);
break;
}
case 82: {
lexer.NextToken();
-#line 1033 "cs.ATG"
+#line 1032 "cs.ATG"
m.Add(Modifier.Internal);
break;
}
case 87: {
lexer.NextToken();
-#line 1034 "cs.ATG"
+#line 1033 "cs.ATG"
m.Add(Modifier.New);
break;
}
case 92: {
lexer.NextToken();
-#line 1035 "cs.ATG"
+#line 1034 "cs.ATG"
m.Add(Modifier.Override);
break;
}
case 94: {
lexer.NextToken();
-#line 1036 "cs.ATG"
+#line 1035 "cs.ATG"
m.Add(Modifier.Private);
break;
}
case 95: {
lexer.NextToken();
-#line 1037 "cs.ATG"
+#line 1036 "cs.ATG"
m.Add(Modifier.Protected);
break;
}
case 96: {
lexer.NextToken();
-#line 1038 "cs.ATG"
+#line 1037 "cs.ATG"
m.Add(Modifier.Public);
break;
}
case 97: {
lexer.NextToken();
-#line 1039 "cs.ATG"
+#line 1038 "cs.ATG"
m.Add(Modifier.Readonly);
break;
}
case 101: {
lexer.NextToken();
-#line 1040 "cs.ATG"
+#line 1039 "cs.ATG"
m.Add(Modifier.Sealed);
break;
}
case 105: {
lexer.NextToken();
-#line 1041 "cs.ATG"
+#line 1040 "cs.ATG"
m.Add(Modifier.Static);
break;
}
case 117: {
lexer.NextToken();
-#line 1042 "cs.ATG"
+#line 1041 "cs.ATG"
m.Add(Modifier.Unsafe);
break;
}
case 120: {
lexer.NextToken();
-#line 1043 "cs.ATG"
+#line 1042 "cs.ATG"
m.Add(Modifier.Virtual);
break;
}
case 122: {
lexer.NextToken();
-#line 1044 "cs.ATG"
+#line 1043 "cs.ATG"
m.Add(Modifier.Volatile);
break;
}
@@ -1776,23 +1775,23 @@ Modifiers m) {
}
void ClassMemberDecl(
-#line 1277 "cs.ATG"
+#line 1276 "cs.ATG"
Modifiers m, List attributes) {
-#line 1278 "cs.ATG"
+#line 1277 "cs.ATG"
Statement stmt = null;
if (StartOf(16)) {
StructMemberDecl(
-#line 1280 "cs.ATG"
+#line 1279 "cs.ATG"
m, attributes);
} else if (la.kind == 26) {
-#line 1281 "cs.ATG"
+#line 1280 "cs.ATG"
m.Check(Modifier.Destructors); Point startPos = t.Location;
lexer.NextToken();
Expect(1);
-#line 1282 "cs.ATG"
+#line 1281 "cs.ATG"
DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes);
d.Modifier = m.Modifier;
d.StartLocation = startPos;
@@ -1800,17 +1799,17 @@ m, attributes);
Expect(19);
Expect(20);
-#line 1286 "cs.ATG"
+#line 1285 "cs.ATG"
d.EndLocation = t.EndLocation;
if (la.kind == 15) {
Block(
-#line 1286 "cs.ATG"
+#line 1285 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(138);
-#line 1287 "cs.ATG"
+#line 1286 "cs.ATG"
d.Body = (BlockStatement)stmt;
compilationUnit.AddChild(d);
@@ -1818,10 +1817,10 @@ out stmt);
}
void StructMemberDecl(
-#line 1047 "cs.ATG"
+#line 1046 "cs.ATG"
Modifiers m, List attributes) {
-#line 1049 "cs.ATG"
+#line 1048 "cs.ATG"
string qualident = null;
TypeReference type;
Expression expr;
@@ -1832,18 +1831,18 @@ Modifiers m, List attributes) {
if (la.kind == 58) {
-#line 1058 "cs.ATG"
+#line 1057 "cs.ATG"
m.Check(Modifier.Constants);
lexer.NextToken();
-#line 1059 "cs.ATG"
+#line 1058 "cs.ATG"
Point startPos = t.Location;
Type(
-#line 1060 "cs.ATG"
+#line 1059 "cs.ATG"
out type);
Expect(1);
-#line 1060 "cs.ATG"
+#line 1059 "cs.ATG"
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifier.Const);
fd.StartLocation = startPos;
VariableDeclaration f = new VariableDeclaration(t.val);
@@ -1851,58 +1850,58 @@ out type);
Expect(3);
Expr(
-#line 1065 "cs.ATG"
+#line 1064 "cs.ATG"
out expr);
-#line 1065 "cs.ATG"
+#line 1064 "cs.ATG"
f.Initializer = expr;
while (la.kind == 13) {
lexer.NextToken();
Expect(1);
-#line 1066 "cs.ATG"
+#line 1065 "cs.ATG"
f = new VariableDeclaration(t.val);
fd.Fields.Add(f);
Expect(3);
Expr(
-#line 1069 "cs.ATG"
+#line 1068 "cs.ATG"
out expr);
-#line 1069 "cs.ATG"
+#line 1068 "cs.ATG"
f.Initializer = expr;
}
Expect(11);
-#line 1070 "cs.ATG"
+#line 1069 "cs.ATG"
fd.EndLocation = t.EndLocation; compilationUnit.AddChild(fd);
} else if (
-#line 1073 "cs.ATG"
+#line 1072 "cs.ATG"
NotVoidPointer()) {
-#line 1073 "cs.ATG"
+#line 1072 "cs.ATG"
m.Check(Modifier.PropertysEventsMethods);
Expect(121);
-#line 1074 "cs.ATG"
+#line 1073 "cs.ATG"
Point startPos = t.Location;
Qualident(
-#line 1075 "cs.ATG"
+#line 1074 "cs.ATG"
out qualident);
if (la.kind == 22) {
TypeParameterList(
-#line 1077 "cs.ATG"
+#line 1076 "cs.ATG"
templates);
}
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 1080 "cs.ATG"
+#line 1079 "cs.ATG"
p);
}
Expect(20);
-#line 1080 "cs.ATG"
+#line 1079 "cs.ATG"
MethodDeclaration methodDeclaration = new MethodDeclaration(qualident,
m.Modifier,
new TypeReference("void"),
@@ -1915,31 +1914,31 @@ p);
compilationUnit.BlockStart(methodDeclaration);
while (
-#line 1093 "cs.ATG"
+#line 1092 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 1093 "cs.ATG"
+#line 1092 "cs.ATG"
templates);
}
if (la.kind == 15) {
Block(
-#line 1095 "cs.ATG"
+#line 1094 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(140);
-#line 1095 "cs.ATG"
+#line 1094 "cs.ATG"
compilationUnit.BlockEnd();
methodDeclaration.Body = (BlockStatement)stmt;
} else if (la.kind == 67) {
-#line 1099 "cs.ATG"
+#line 1098 "cs.ATG"
m.Check(Modifier.PropertysEventsMethods);
lexer.NextToken();
-#line 1100 "cs.ATG"
+#line 1099 "cs.ATG"
EventDeclaration eventDecl = new EventDeclaration(m.Modifier, attributes);
eventDecl.StartLocation = t.Location;
compilationUnit.AddChild(eventDecl);
@@ -1948,103 +1947,103 @@ out stmt);
EventRemoveRegion removeBlock = null;
Type(
-#line 1107 "cs.ATG"
+#line 1106 "cs.ATG"
out type);
-#line 1107 "cs.ATG"
+#line 1106 "cs.ATG"
eventDecl.TypeReference = type;
if (
-#line 1109 "cs.ATG"
+#line 1108 "cs.ATG"
IsVarDecl()) {
VariableDeclarator(
-#line 1109 "cs.ATG"
+#line 1108 "cs.ATG"
variableDeclarators);
while (la.kind == 13) {
lexer.NextToken();
VariableDeclarator(
-#line 1110 "cs.ATG"
+#line 1109 "cs.ATG"
variableDeclarators);
}
Expect(11);
-#line 1110 "cs.ATG"
+#line 1109 "cs.ATG"
eventDecl.VariableDeclarators = variableDeclarators; eventDecl.EndLocation = t.EndLocation;
} else if (la.kind == 1) {
Qualident(
-#line 1111 "cs.ATG"
+#line 1110 "cs.ATG"
out qualident);
-#line 1111 "cs.ATG"
+#line 1110 "cs.ATG"
eventDecl.Name = qualident; eventDecl.EndLocation = t.EndLocation;
Expect(15);
-#line 1112 "cs.ATG"
+#line 1111 "cs.ATG"
eventDecl.BodyStart = t.Location;
EventAccessorDecls(
-#line 1113 "cs.ATG"
+#line 1112 "cs.ATG"
out addBlock, out removeBlock);
Expect(16);
-#line 1114 "cs.ATG"
+#line 1113 "cs.ATG"
eventDecl.BodyEnd = t.EndLocation;
} else SynErr(141);
-#line 1115 "cs.ATG"
+#line 1114 "cs.ATG"
compilationUnit.BlockEnd();
eventDecl.AddRegion = addBlock;
eventDecl.RemoveRegion = removeBlock;
} else if (
-#line 1122 "cs.ATG"
+#line 1121 "cs.ATG"
IdentAndLPar()) {
-#line 1122 "cs.ATG"
+#line 1121 "cs.ATG"
m.Check(Modifier.Constructors | Modifier.StaticConstructors);
Expect(1);
-#line 1123 "cs.ATG"
+#line 1122 "cs.ATG"
string name = t.val; Point startPos = t.Location;
Expect(19);
if (StartOf(9)) {
-#line 1123 "cs.ATG"
+#line 1122 "cs.ATG"
m.Check(Modifier.Constructors);
FormalParameterList(
-#line 1124 "cs.ATG"
+#line 1123 "cs.ATG"
p);
}
Expect(20);
-#line 1126 "cs.ATG"
+#line 1125 "cs.ATG"
ConstructorInitializer init = null;
if (la.kind == 9) {
-#line 1127 "cs.ATG"
+#line 1126 "cs.ATG"
m.Check(Modifier.Constructors);
ConstructorInitializer(
-#line 1128 "cs.ATG"
+#line 1127 "cs.ATG"
out init);
}
-#line 1130 "cs.ATG"
+#line 1129 "cs.ATG"
ConstructorDeclaration cd = new ConstructorDeclaration(name, m.Modifier, p, init, attributes);
cd.StartLocation = startPos;
cd.EndLocation = t.EndLocation;
if (la.kind == 15) {
Block(
-#line 1135 "cs.ATG"
+#line 1134 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(142);
-#line 1135 "cs.ATG"
+#line 1134 "cs.ATG"
cd.Body = (BlockStatement)stmt; compilationUnit.AddChild(cd);
} else if (la.kind == 68 || la.kind == 78) {
-#line 1138 "cs.ATG"
+#line 1137 "cs.ATG"
m.Check(Modifier.Operators);
if (m.isNone) Error("at least one modifier must be set");
bool isImplicit = true;
@@ -2054,37 +2053,37 @@ out stmt);
} else {
lexer.NextToken();
-#line 1142 "cs.ATG"
+#line 1141 "cs.ATG"
isImplicit = false;
}
Expect(90);
Type(
-#line 1143 "cs.ATG"
+#line 1142 "cs.ATG"
out type);
-#line 1143 "cs.ATG"
+#line 1142 "cs.ATG"
TypeReference operatorType = type;
Expect(19);
Type(
-#line 1144 "cs.ATG"
+#line 1143 "cs.ATG"
out type);
Expect(1);
-#line 1144 "cs.ATG"
+#line 1143 "cs.ATG"
string varName = t.val;
Expect(20);
if (la.kind == 15) {
Block(
-#line 1144 "cs.ATG"
+#line 1143 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
-#line 1144 "cs.ATG"
+#line 1143 "cs.ATG"
stmt = null;
} else SynErr(143);
-#line 1147 "cs.ATG"
+#line 1146 "cs.ATG"
List parameters = new List();
parameters.Add(new ParameterDeclarationExpression(type, varName));
OperatorDeclaration operatorDeclaration = new OperatorDeclaration(m.Modifier,
@@ -2098,58 +2097,58 @@ out stmt);
} else if (StartOf(17)) {
TypeDecl(
-#line 1160 "cs.ATG"
+#line 1159 "cs.ATG"
m, attributes);
} else if (StartOf(8)) {
Type(
-#line 1161 "cs.ATG"
+#line 1160 "cs.ATG"
out type);
-#line 1161 "cs.ATG"
+#line 1160 "cs.ATG"
Point startPos = t.Location;
if (la.kind == 90) {
-#line 1163 "cs.ATG"
+#line 1162 "cs.ATG"
OverloadableOperatorType op;
m.Check(Modifier.Operators);
if (m.isNone) Error("at least one modifier must be set");
lexer.NextToken();
OverloadableOperator(
-#line 1167 "cs.ATG"
+#line 1166 "cs.ATG"
out op);
-#line 1167 "cs.ATG"
+#line 1166 "cs.ATG"
TypeReference firstType, secondType = null; string secondName = null;
Expect(19);
Type(
-#line 1168 "cs.ATG"
+#line 1167 "cs.ATG"
out firstType);
Expect(1);
-#line 1168 "cs.ATG"
+#line 1167 "cs.ATG"
string firstName = t.val;
if (la.kind == 13) {
lexer.NextToken();
Type(
-#line 1169 "cs.ATG"
+#line 1168 "cs.ATG"
out secondType);
Expect(1);
-#line 1169 "cs.ATG"
+#line 1168 "cs.ATG"
secondName = t.val;
} else if (la.kind == 20) {
} else SynErr(144);
Expect(20);
if (la.kind == 15) {
Block(
-#line 1177 "cs.ATG"
+#line 1176 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(145);
-#line 1179 "cs.ATG"
+#line 1178 "cs.ATG"
List parameters = new List();
parameters.Add(new ParameterDeclarationExpression(firstType, firstName));
if (secondType != null) {
@@ -2164,43 +2163,43 @@ out stmt);
compilationUnit.AddChild(operatorDeclaration);
} else if (
-#line 1194 "cs.ATG"
+#line 1193 "cs.ATG"
IsVarDecl()) {
-#line 1194 "cs.ATG"
+#line 1193 "cs.ATG"
m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = startPos;
VariableDeclarator(
-#line 1198 "cs.ATG"
+#line 1197 "cs.ATG"
variableDeclarators);
while (la.kind == 13) {
lexer.NextToken();
VariableDeclarator(
-#line 1199 "cs.ATG"
+#line 1198 "cs.ATG"
variableDeclarators);
}
Expect(11);
-#line 1200 "cs.ATG"
+#line 1199 "cs.ATG"
fd.EndLocation = t.EndLocation; fd.Fields = variableDeclarators; compilationUnit.AddChild(fd);
} else if (la.kind == 109) {
-#line 1203 "cs.ATG"
+#line 1202 "cs.ATG"
m.Check(Modifier.Indexers);
lexer.NextToken();
Expect(17);
FormalParameterList(
-#line 1204 "cs.ATG"
+#line 1203 "cs.ATG"
p);
Expect(18);
-#line 1204 "cs.ATG"
+#line 1203 "cs.ATG"
Point endLocation = t.EndLocation;
Expect(15);
-#line 1205 "cs.ATG"
+#line 1204 "cs.ATG"
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = startPos;
indexer.EndLocation = endLocation;
@@ -2209,11 +2208,11 @@ p);
PropertySetRegion setRegion;
AccessorDecls(
-#line 1212 "cs.ATG"
+#line 1211 "cs.ATG"
out getRegion, out setRegion);
Expect(16);
-#line 1213 "cs.ATG"
+#line 1212 "cs.ATG"
indexer.BodyEnd = t.EndLocation;
indexer.GetRegion = getRegion;
indexer.SetRegion = setRegion;
@@ -2221,30 +2220,30 @@ out getRegion, out setRegion);
} else if (la.kind == 1) {
Qualident(
-#line 1218 "cs.ATG"
+#line 1217 "cs.ATG"
out qualident);
-#line 1218 "cs.ATG"
+#line 1217 "cs.ATG"
Point qualIdentEndLocation = t.EndLocation;
if (la.kind == 15 || la.kind == 19 || la.kind == 22) {
if (la.kind == 19 || la.kind == 22) {
-#line 1221 "cs.ATG"
+#line 1220 "cs.ATG"
m.Check(Modifier.PropertysEventsMethods);
if (la.kind == 22) {
TypeParameterList(
-#line 1223 "cs.ATG"
+#line 1222 "cs.ATG"
templates);
}
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 1224 "cs.ATG"
+#line 1223 "cs.ATG"
p);
}
Expect(20);
-#line 1225 "cs.ATG"
+#line 1224 "cs.ATG"
MethodDeclaration methodDeclaration = new MethodDeclaration(qualident,
m.Modifier,
type,
@@ -2256,26 +2255,26 @@ p);
compilationUnit.AddChild(methodDeclaration);
while (
-#line 1235 "cs.ATG"
+#line 1234 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 1235 "cs.ATG"
+#line 1234 "cs.ATG"
templates);
}
if (la.kind == 15) {
Block(
-#line 1236 "cs.ATG"
+#line 1235 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(146);
-#line 1236 "cs.ATG"
+#line 1235 "cs.ATG"
methodDeclaration.Body = (BlockStatement)stmt;
} else {
lexer.NextToken();
-#line 1239 "cs.ATG"
+#line 1238 "cs.ATG"
PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes);
pDecl.StartLocation = startPos;
pDecl.EndLocation = qualIdentEndLocation;
@@ -2284,11 +2283,11 @@ out stmt);
PropertySetRegion setRegion;
AccessorDecls(
-#line 1246 "cs.ATG"
+#line 1245 "cs.ATG"
out getRegion, out setRegion);
Expect(16);
-#line 1248 "cs.ATG"
+#line 1247 "cs.ATG"
pDecl.GetRegion = getRegion;
pDecl.SetRegion = setRegion;
pDecl.BodyEnd = t.EndLocation;
@@ -2297,17 +2296,17 @@ out getRegion, out setRegion);
}
} else if (la.kind == 14) {
-#line 1256 "cs.ATG"
+#line 1255 "cs.ATG"
m.Check(Modifier.Indexers);
lexer.NextToken();
Expect(109);
Expect(17);
FormalParameterList(
-#line 1257 "cs.ATG"
+#line 1256 "cs.ATG"
p);
Expect(18);
-#line 1258 "cs.ATG"
+#line 1257 "cs.ATG"
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = startPos;
indexer.EndLocation = t.EndLocation;
@@ -2317,14 +2316,14 @@ p);
Expect(15);
-#line 1265 "cs.ATG"
+#line 1264 "cs.ATG"
Point bodyStart = t.Location;
AccessorDecls(
-#line 1266 "cs.ATG"
+#line 1265 "cs.ATG"
out getRegion, out setRegion);
Expect(16);
-#line 1267 "cs.ATG"
+#line 1266 "cs.ATG"
indexer.BodyStart = bodyStart;
indexer.BodyEnd = t.EndLocation;
indexer.GetRegion = getRegion;
@@ -2338,7 +2337,7 @@ out getRegion, out setRegion);
void InterfaceMemberDecl() {
-#line 1294 "cs.ATG"
+#line 1293 "cs.ATG"
TypeReference type;
AttributeSection section;
@@ -2353,51 +2352,51 @@ out getRegion, out setRegion);
while (la.kind == 17) {
AttributeSection(
-#line 1307 "cs.ATG"
+#line 1306 "cs.ATG"
out section);
-#line 1307 "cs.ATG"
+#line 1306 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 87) {
lexer.NextToken();
-#line 1308 "cs.ATG"
+#line 1307 "cs.ATG"
mod = Modifier.New; startLocation = t.Location;
}
if (
-#line 1311 "cs.ATG"
+#line 1310 "cs.ATG"
NotVoidPointer()) {
Expect(121);
-#line 1311 "cs.ATG"
+#line 1310 "cs.ATG"
if (startLocation.X == -1) startLocation = t.Location;
Expect(1);
-#line 1311 "cs.ATG"
+#line 1310 "cs.ATG"
name = t.val;
if (la.kind == 22) {
TypeParameterList(
-#line 1312 "cs.ATG"
+#line 1311 "cs.ATG"
templates);
}
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 1313 "cs.ATG"
+#line 1312 "cs.ATG"
parameters);
}
Expect(20);
while (
-#line 1314 "cs.ATG"
+#line 1313 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 1314 "cs.ATG"
+#line 1313 "cs.ATG"
templates);
}
Expect(11);
-#line 1316 "cs.ATG"
+#line 1315 "cs.ATG"
MethodDeclaration md = new MethodDeclaration(name, mod, new TypeReference("void"), parameters, attributes);
md.StartLocation = startLocation;
md.EndLocation = t.EndLocation;
@@ -2407,39 +2406,39 @@ templates);
} else if (StartOf(18)) {
if (StartOf(8)) {
Type(
-#line 1323 "cs.ATG"
+#line 1322 "cs.ATG"
out type);
-#line 1323 "cs.ATG"
+#line 1322 "cs.ATG"
if (startLocation.X == -1) startLocation = t.Location;
if (la.kind == 1) {
lexer.NextToken();
-#line 1325 "cs.ATG"
+#line 1324 "cs.ATG"
name = t.val; Point qualIdentEndLocation = t.EndLocation;
if (la.kind == 19 || la.kind == 22) {
if (la.kind == 22) {
TypeParameterList(
-#line 1329 "cs.ATG"
+#line 1328 "cs.ATG"
templates);
}
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 1330 "cs.ATG"
+#line 1329 "cs.ATG"
parameters);
}
Expect(20);
while (
-#line 1332 "cs.ATG"
+#line 1331 "cs.ATG"
IdentIsWhere()) {
TypeParameterConstraintsClause(
-#line 1332 "cs.ATG"
+#line 1331 "cs.ATG"
templates);
}
Expect(11);
-#line 1333 "cs.ATG"
+#line 1332 "cs.ATG"
MethodDeclaration md = new MethodDeclaration(name, mod, type, parameters, attributes);
md.StartLocation = startLocation;
md.EndLocation = t.EndLocation;
@@ -2448,72 +2447,72 @@ templates);
} else if (la.kind == 15) {
-#line 1340 "cs.ATG"
+#line 1339 "cs.ATG"
PropertyDeclaration pd = new PropertyDeclaration(name, type, mod, attributes); compilationUnit.AddChild(pd);
lexer.NextToken();
-#line 1341 "cs.ATG"
+#line 1340 "cs.ATG"
Point bodyStart = t.Location;
InterfaceAccessors(
-#line 1341 "cs.ATG"
+#line 1340 "cs.ATG"
out getBlock, out setBlock);
Expect(16);
-#line 1341 "cs.ATG"
+#line 1340 "cs.ATG"
pd.GetRegion = getBlock; pd.SetRegion = setBlock; pd.StartLocation = startLocation; pd.EndLocation = qualIdentEndLocation; pd.BodyStart = bodyStart; pd.BodyEnd = t.EndLocation;
} else SynErr(150);
} else if (la.kind == 109) {
lexer.NextToken();
Expect(17);
FormalParameterList(
-#line 1344 "cs.ATG"
+#line 1343 "cs.ATG"
parameters);
Expect(18);
-#line 1344 "cs.ATG"
+#line 1343 "cs.ATG"
Point bracketEndLocation = t.EndLocation;
-#line 1344 "cs.ATG"
+#line 1343 "cs.ATG"
IndexerDeclaration id = new IndexerDeclaration(type, parameters, mod, attributes); compilationUnit.AddChild(id);
Expect(15);
-#line 1345 "cs.ATG"
+#line 1344 "cs.ATG"
Point bodyStart = t.Location;
InterfaceAccessors(
-#line 1345 "cs.ATG"
+#line 1344 "cs.ATG"
out getBlock, out setBlock);
Expect(16);
-#line 1345 "cs.ATG"
+#line 1344 "cs.ATG"
id.GetRegion = getBlock; id.SetRegion = setBlock; id.StartLocation = startLocation; id.EndLocation = bracketEndLocation; id.BodyStart = bodyStart; id.BodyEnd = t.EndLocation;
} else SynErr(151);
} else {
lexer.NextToken();
-#line 1348 "cs.ATG"
+#line 1347 "cs.ATG"
if (startLocation.X == -1) startLocation = t.Location;
Type(
-#line 1348 "cs.ATG"
+#line 1347 "cs.ATG"
out type);
Expect(1);
-#line 1348 "cs.ATG"
+#line 1347 "cs.ATG"
EventDeclaration ed = new EventDeclaration(type, t.val, mod, attributes);
compilationUnit.AddChild(ed);
Expect(11);
-#line 1351 "cs.ATG"
+#line 1350 "cs.ATG"
ed.StartLocation = startLocation; ed.EndLocation = t.EndLocation;
}
} else SynErr(152);
}
void EnumMemberDecl(
-#line 1356 "cs.ATG"
+#line 1355 "cs.ATG"
out FieldDeclaration f) {
-#line 1358 "cs.ATG"
+#line 1357 "cs.ATG"
Expression expr = null;
List attributes = new List();
AttributeSection section = null;
@@ -2521,15 +2520,15 @@ out FieldDeclaration f) {
while (la.kind == 17) {
AttributeSection(
-#line 1364 "cs.ATG"
+#line 1363 "cs.ATG"
out section);
-#line 1364 "cs.ATG"
+#line 1363 "cs.ATG"
attributes.Add(section);
}
Expect(1);
-#line 1365 "cs.ATG"
+#line 1364 "cs.ATG"
f = new FieldDeclaration(attributes);
varDecl = new VariableDeclaration(t.val);
f.Fields.Add(varDecl);
@@ -2538,92 +2537,92 @@ out section);
if (la.kind == 3) {
lexer.NextToken();
Expr(
-#line 1370 "cs.ATG"
+#line 1369 "cs.ATG"
out expr);
-#line 1370 "cs.ATG"
+#line 1369 "cs.ATG"
varDecl.Initializer = expr;
}
}
void SimpleType(
-#line 938 "cs.ATG"
+#line 937 "cs.ATG"
out string name) {
-#line 939 "cs.ATG"
+#line 938 "cs.ATG"
name = String.Empty;
if (StartOf(19)) {
IntegralType(
-#line 941 "cs.ATG"
+#line 940 "cs.ATG"
out name);
} else if (la.kind == 73) {
lexer.NextToken();
-#line 942 "cs.ATG"
+#line 941 "cs.ATG"
name = "float";
} else if (la.kind == 64) {
lexer.NextToken();
-#line 943 "cs.ATG"
+#line 942 "cs.ATG"
name = "double";
} else if (la.kind == 60) {
lexer.NextToken();
-#line 944 "cs.ATG"
+#line 943 "cs.ATG"
name = "decimal";
} else if (la.kind == 50) {
lexer.NextToken();
-#line 945 "cs.ATG"
+#line 944 "cs.ATG"
name = "bool";
} else SynErr(153);
}
void NonArrayType(
-#line 920 "cs.ATG"
+#line 919 "cs.ATG"
out TypeReference type) {
-#line 922 "cs.ATG"
+#line 921 "cs.ATG"
string name;
int pointer = 0;
type = null;
if (la.kind == 1 || la.kind == 89 || la.kind == 106) {
ClassType(
-#line 927 "cs.ATG"
+#line 926 "cs.ATG"
out type);
} else if (StartOf(14)) {
SimpleType(
-#line 928 "cs.ATG"
+#line 927 "cs.ATG"
out name);
-#line 928 "cs.ATG"
+#line 927 "cs.ATG"
type = new TypeReference(name);
} else if (la.kind == 121) {
lexer.NextToken();
Expect(6);
-#line 929 "cs.ATG"
+#line 928 "cs.ATG"
pointer = 1; type = new TypeReference("void");
} else SynErr(154);
while (
-#line 932 "cs.ATG"
+#line 931 "cs.ATG"
IsPointer()) {
Expect(6);
-#line 933 "cs.ATG"
+#line 932 "cs.ATG"
++pointer;
}
-#line 935 "cs.ATG"
+#line 934 "cs.ATG"
if (type != null) { type.PointerNestingLevel = pointer; }
}
void FixedParameter(
-#line 975 "cs.ATG"
+#line 974 "cs.ATG"
out ParameterDeclarationExpression p) {
-#line 977 "cs.ATG"
+#line 976 "cs.ATG"
TypeReference type;
ParamModifier mod = ParamModifier.In;
@@ -2631,46 +2630,46 @@ out ParameterDeclarationExpression p) {
if (la.kind == 98) {
lexer.NextToken();
-#line 982 "cs.ATG"
+#line 981 "cs.ATG"
mod = ParamModifier.Ref;
} else {
lexer.NextToken();
-#line 983 "cs.ATG"
+#line 982 "cs.ATG"
mod = ParamModifier.Out;
}
}
Type(
-#line 985 "cs.ATG"
+#line 984 "cs.ATG"
out type);
Expect(1);
-#line 985 "cs.ATG"
+#line 984 "cs.ATG"
p = new ParameterDeclarationExpression(type, t.val, mod);
}
void ParameterArray(
-#line 988 "cs.ATG"
+#line 987 "cs.ATG"
out ParameterDeclarationExpression p) {
-#line 989 "cs.ATG"
+#line 988 "cs.ATG"
TypeReference type;
Expect(93);
Type(
-#line 991 "cs.ATG"
+#line 990 "cs.ATG"
out type);
Expect(1);
-#line 991 "cs.ATG"
+#line 990 "cs.ATG"
p = new ParameterDeclarationExpression(type, t.val, ParamModifier.Params);
}
void Block(
-#line 1474 "cs.ATG"
+#line 1473 "cs.ATG"
out Statement stmt) {
Expect(15);
-#line 1476 "cs.ATG"
+#line 1475 "cs.ATG"
BlockStatement blockStmt = new BlockStatement();
blockStmt.StartLocation = t.EndLocation;
compilationUnit.BlockStart(blockStmt);
@@ -2681,7 +2680,7 @@ out Statement stmt) {
}
Expect(16);
-#line 1483 "cs.ATG"
+#line 1482 "cs.ATG"
stmt = blockStmt;
blockStmt.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
@@ -2689,34 +2688,34 @@ out Statement stmt) {
}
void VariableDeclarator(
-#line 1467 "cs.ATG"
+#line 1466 "cs.ATG"
List fieldDeclaration) {
-#line 1468 "cs.ATG"
+#line 1467 "cs.ATG"
Expression expr = null;
Expect(1);
-#line 1470 "cs.ATG"
+#line 1469 "cs.ATG"
VariableDeclaration f = new VariableDeclaration(t.val);
if (la.kind == 3) {
lexer.NextToken();
VariableInitializer(
-#line 1471 "cs.ATG"
+#line 1470 "cs.ATG"
out expr);
-#line 1471 "cs.ATG"
+#line 1470 "cs.ATG"
f.Initializer = expr;
}
-#line 1471 "cs.ATG"
+#line 1470 "cs.ATG"
fieldDeclaration.Add(f);
}
void EventAccessorDecls(
-#line 1416 "cs.ATG"
+#line 1415 "cs.ATG"
out EventAddRegion addBlock, out EventRemoveRegion removeBlock) {
-#line 1417 "cs.ATG"
+#line 1416 "cs.ATG"
AttributeSection section;
List attributes = new List();
Statement stmt;
@@ -2725,102 +2724,102 @@ out EventAddRegion addBlock, out EventRemoveRegion removeBlock) {
while (la.kind == 17) {
AttributeSection(
-#line 1424 "cs.ATG"
+#line 1423 "cs.ATG"
out section);
-#line 1424 "cs.ATG"
+#line 1423 "cs.ATG"
attributes.Add(section);
}
if (
-#line 1426 "cs.ATG"
+#line 1425 "cs.ATG"
IdentIsAdd()) {
-#line 1426 "cs.ATG"
+#line 1425 "cs.ATG"
addBlock = new EventAddRegion(attributes);
AddAccessorDecl(
-#line 1427 "cs.ATG"
+#line 1426 "cs.ATG"
out stmt);
-#line 1427 "cs.ATG"
+#line 1426 "cs.ATG"
attributes = new List(); addBlock.Block = (BlockStatement)stmt;
while (la.kind == 17) {
AttributeSection(
-#line 1428 "cs.ATG"
+#line 1427 "cs.ATG"
out section);
-#line 1428 "cs.ATG"
+#line 1427 "cs.ATG"
attributes.Add(section);
}
RemoveAccessorDecl(
-#line 1429 "cs.ATG"
+#line 1428 "cs.ATG"
out stmt);
-#line 1429 "cs.ATG"
+#line 1428 "cs.ATG"
removeBlock = new EventRemoveRegion(attributes); removeBlock.Block = (BlockStatement)stmt;
} else if (
-#line 1430 "cs.ATG"
+#line 1429 "cs.ATG"
IdentIsRemove()) {
RemoveAccessorDecl(
-#line 1431 "cs.ATG"
+#line 1430 "cs.ATG"
out stmt);
-#line 1431 "cs.ATG"
+#line 1430 "cs.ATG"
removeBlock = new EventRemoveRegion(attributes); removeBlock.Block = (BlockStatement)stmt; attributes = new List();
while (la.kind == 17) {
AttributeSection(
-#line 1432 "cs.ATG"
+#line 1431 "cs.ATG"
out section);
-#line 1432 "cs.ATG"
+#line 1431 "cs.ATG"
attributes.Add(section);
}
AddAccessorDecl(
-#line 1433 "cs.ATG"
+#line 1432 "cs.ATG"
out stmt);
-#line 1433 "cs.ATG"
+#line 1432 "cs.ATG"
addBlock = new EventAddRegion(attributes); addBlock.Block = (BlockStatement)stmt;
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1434 "cs.ATG"
+#line 1433 "cs.ATG"
Error("add or remove accessor declaration expected");
} else SynErr(155);
}
void ConstructorInitializer(
-#line 1505 "cs.ATG"
+#line 1504 "cs.ATG"
out ConstructorInitializer ci) {
-#line 1506 "cs.ATG"
+#line 1505 "cs.ATG"
Expression expr; ci = new ConstructorInitializer();
Expect(9);
if (la.kind == 49) {
lexer.NextToken();
-#line 1510 "cs.ATG"
+#line 1509 "cs.ATG"
ci.ConstructorInitializerType = ConstructorInitializerType.Base;
} else if (la.kind == 109) {
lexer.NextToken();
-#line 1511 "cs.ATG"
+#line 1510 "cs.ATG"
ci.ConstructorInitializerType = ConstructorInitializerType.This;
} else SynErr(156);
Expect(19);
if (StartOf(21)) {
Argument(
-#line 1514 "cs.ATG"
+#line 1513 "cs.ATG"
out expr);
-#line 1514 "cs.ATG"
+#line 1513 "cs.ATG"
if (expr != null) { ci.Arguments.Add(expr); }
while (la.kind == 13) {
lexer.NextToken();
Argument(
-#line 1514 "cs.ATG"
+#line 1513 "cs.ATG"
out expr);
-#line 1514 "cs.ATG"
+#line 1513 "cs.ATG"
if (expr != null) { ci.Arguments.Add(expr); }
}
}
@@ -2828,161 +2827,161 @@ out expr);
}
void OverloadableOperator(
-#line 1526 "cs.ATG"
+#line 1525 "cs.ATG"
out OverloadableOperatorType op) {
-#line 1527 "cs.ATG"
+#line 1526 "cs.ATG"
op = OverloadableOperatorType.None;
switch (la.kind) {
case 4: {
lexer.NextToken();
-#line 1529 "cs.ATG"
+#line 1528 "cs.ATG"
op = OverloadableOperatorType.Add;
break;
}
case 5: {
lexer.NextToken();
-#line 1530 "cs.ATG"
+#line 1529 "cs.ATG"
op = OverloadableOperatorType.Subtract;
break;
}
case 23: {
lexer.NextToken();
-#line 1532 "cs.ATG"
+#line 1531 "cs.ATG"
op = OverloadableOperatorType.Not;
break;
}
case 26: {
lexer.NextToken();
-#line 1533 "cs.ATG"
+#line 1532 "cs.ATG"
op = OverloadableOperatorType.BitNot;
break;
}
case 30: {
lexer.NextToken();
-#line 1535 "cs.ATG"
+#line 1534 "cs.ATG"
op = OverloadableOperatorType.Increment;
break;
}
case 31: {
lexer.NextToken();
-#line 1536 "cs.ATG"
+#line 1535 "cs.ATG"
op = OverloadableOperatorType.Decrement;
break;
}
case 111: {
lexer.NextToken();
-#line 1538 "cs.ATG"
+#line 1537 "cs.ATG"
op = OverloadableOperatorType.True;
break;
}
case 70: {
lexer.NextToken();
-#line 1539 "cs.ATG"
+#line 1538 "cs.ATG"
op = OverloadableOperatorType.False;
break;
}
case 6: {
lexer.NextToken();
-#line 1541 "cs.ATG"
+#line 1540 "cs.ATG"
op = OverloadableOperatorType.Multiply;
break;
}
case 7: {
lexer.NextToken();
-#line 1542 "cs.ATG"
+#line 1541 "cs.ATG"
op = OverloadableOperatorType.Divide;
break;
}
case 8: {
lexer.NextToken();
-#line 1543 "cs.ATG"
+#line 1542 "cs.ATG"
op = OverloadableOperatorType.Modulus;
break;
}
case 27: {
lexer.NextToken();
-#line 1545 "cs.ATG"
+#line 1544 "cs.ATG"
op = OverloadableOperatorType.BitwiseAnd;
break;
}
case 28: {
lexer.NextToken();
-#line 1546 "cs.ATG"
+#line 1545 "cs.ATG"
op = OverloadableOperatorType.BitwiseOr;
break;
}
case 29: {
lexer.NextToken();
-#line 1547 "cs.ATG"
+#line 1546 "cs.ATG"
op = OverloadableOperatorType.ExclusiveOr;
break;
}
case 36: {
lexer.NextToken();
-#line 1549 "cs.ATG"
+#line 1548 "cs.ATG"
op = OverloadableOperatorType.ShiftLeft;
break;
}
case 32: {
lexer.NextToken();
-#line 1550 "cs.ATG"
+#line 1549 "cs.ATG"
op = OverloadableOperatorType.Equality;
break;
}
case 33: {
lexer.NextToken();
-#line 1551 "cs.ATG"
+#line 1550 "cs.ATG"
op = OverloadableOperatorType.InEquality;
break;
}
case 22: {
lexer.NextToken();
-#line 1552 "cs.ATG"
+#line 1551 "cs.ATG"
op = OverloadableOperatorType.LessThan;
break;
}
case 34: {
lexer.NextToken();
-#line 1553 "cs.ATG"
+#line 1552 "cs.ATG"
op = OverloadableOperatorType.GreaterThanOrEqual;
break;
}
case 35: {
lexer.NextToken();
-#line 1554 "cs.ATG"
+#line 1553 "cs.ATG"
op = OverloadableOperatorType.LessThanOrEqual;
break;
}
case 21: {
lexer.NextToken();
-#line 1555 "cs.ATG"
+#line 1554 "cs.ATG"
op = OverloadableOperatorType.GreaterThan;
if (la.kind == 21) {
lexer.NextToken();
-#line 1555 "cs.ATG"
+#line 1554 "cs.ATG"
op = OverloadableOperatorType.ShiftRight;
}
break;
@@ -2992,10 +2991,10 @@ out OverloadableOperatorType op) {
}
void AccessorDecls(
-#line 1374 "cs.ATG"
+#line 1373 "cs.ATG"
out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
-#line 1376 "cs.ATG"
+#line 1375 "cs.ATG"
List attributes = new List();
AttributeSection section;
getBlock = null;
@@ -3003,136 +3002,136 @@ out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
while (la.kind == 17) {
AttributeSection(
-#line 1382 "cs.ATG"
+#line 1381 "cs.ATG"
out section);
-#line 1382 "cs.ATG"
+#line 1381 "cs.ATG"
attributes.Add(section);
}
if (
-#line 1384 "cs.ATG"
+#line 1383 "cs.ATG"
IdentIsGet()) {
GetAccessorDecl(
-#line 1385 "cs.ATG"
+#line 1384 "cs.ATG"
out getBlock, attributes);
if (la.kind == 1 || la.kind == 17) {
-#line 1386 "cs.ATG"
+#line 1385 "cs.ATG"
attributes = new List();
while (la.kind == 17) {
AttributeSection(
-#line 1387 "cs.ATG"
+#line 1386 "cs.ATG"
out section);
-#line 1387 "cs.ATG"
+#line 1386 "cs.ATG"
attributes.Add(section);
}
SetAccessorDecl(
-#line 1388 "cs.ATG"
+#line 1387 "cs.ATG"
out setBlock, attributes);
}
} else if (
-#line 1390 "cs.ATG"
+#line 1389 "cs.ATG"
IdentIsSet()) {
SetAccessorDecl(
-#line 1391 "cs.ATG"
+#line 1390 "cs.ATG"
out setBlock, attributes);
if (la.kind == 1 || la.kind == 17) {
-#line 1392 "cs.ATG"
+#line 1391 "cs.ATG"
attributes = new List();
while (la.kind == 17) {
AttributeSection(
-#line 1393 "cs.ATG"
+#line 1392 "cs.ATG"
out section);
-#line 1393 "cs.ATG"
+#line 1392 "cs.ATG"
attributes.Add(section);
}
GetAccessorDecl(
-#line 1394 "cs.ATG"
+#line 1393 "cs.ATG"
out getBlock, attributes);
}
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1396 "cs.ATG"
+#line 1395 "cs.ATG"
Error("get or set accessor declaration expected");
} else SynErr(158);
}
void InterfaceAccessors(
-#line 1438 "cs.ATG"
+#line 1437 "cs.ATG"
out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
-#line 1440 "cs.ATG"
+#line 1439 "cs.ATG"
AttributeSection section;
List attributes = new List();
getBlock = null; setBlock = null;
while (la.kind == 17) {
AttributeSection(
-#line 1445 "cs.ATG"
+#line 1444 "cs.ATG"
out section);
-#line 1445 "cs.ATG"
+#line 1444 "cs.ATG"
attributes.Add(section);
}
if (
-#line 1447 "cs.ATG"
+#line 1446 "cs.ATG"
IdentIsGet()) {
Expect(1);
-#line 1447 "cs.ATG"
+#line 1446 "cs.ATG"
getBlock = new PropertyGetRegion(null, attributes);
} else if (
-#line 1448 "cs.ATG"
+#line 1447 "cs.ATG"
IdentIsSet()) {
Expect(1);
-#line 1448 "cs.ATG"
+#line 1447 "cs.ATG"
setBlock = new PropertySetRegion(null, attributes);
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1449 "cs.ATG"
+#line 1448 "cs.ATG"
Error("set or get expected");
} else SynErr(159);
Expect(11);
-#line 1451 "cs.ATG"
+#line 1450 "cs.ATG"
attributes = new List();
if (la.kind == 1 || la.kind == 17) {
while (la.kind == 17) {
AttributeSection(
-#line 1453 "cs.ATG"
+#line 1452 "cs.ATG"
out section);
-#line 1453 "cs.ATG"
+#line 1452 "cs.ATG"
attributes.Add(section);
}
if (
-#line 1455 "cs.ATG"
+#line 1454 "cs.ATG"
IdentIsGet()) {
Expect(1);
-#line 1455 "cs.ATG"
+#line 1454 "cs.ATG"
if (getBlock != null) Error("get already declared");
else getBlock = new PropertyGetRegion(null, attributes);
} else if (
-#line 1458 "cs.ATG"
+#line 1457 "cs.ATG"
IdentIsSet()) {
Expect(1);
-#line 1458 "cs.ATG"
+#line 1457 "cs.ATG"
if (setBlock != null) Error("set already declared");
else setBlock = new PropertySetRegion(null, attributes);
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1461 "cs.ATG"
+#line 1460 "cs.ATG"
Error("set or get expected");
} else SynErr(160);
Expect(11);
@@ -3140,183 +3139,183 @@ IdentIsSet()) {
}
void GetAccessorDecl(
-#line 1400 "cs.ATG"
+#line 1399 "cs.ATG"
out PropertyGetRegion getBlock, List attributes) {
-#line 1401 "cs.ATG"
+#line 1400 "cs.ATG"
Statement stmt = null;
Expect(1);
-#line 1404 "cs.ATG"
+#line 1403 "cs.ATG"
if (t.val != "get") Error("get expected");
if (la.kind == 15) {
Block(
-#line 1405 "cs.ATG"
+#line 1404 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(161);
-#line 1405 "cs.ATG"
+#line 1404 "cs.ATG"
getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes);
}
void SetAccessorDecl(
-#line 1408 "cs.ATG"
+#line 1407 "cs.ATG"
out PropertySetRegion setBlock, List attributes) {
-#line 1409 "cs.ATG"
+#line 1408 "cs.ATG"
Statement stmt = null;
Expect(1);
-#line 1412 "cs.ATG"
+#line 1411 "cs.ATG"
if (t.val != "set") Error("set expected");
if (la.kind == 15) {
Block(
-#line 1413 "cs.ATG"
+#line 1412 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(162);
-#line 1413 "cs.ATG"
+#line 1412 "cs.ATG"
setBlock = new PropertySetRegion((BlockStatement)stmt, attributes);
}
void AddAccessorDecl(
-#line 1489 "cs.ATG"
+#line 1488 "cs.ATG"
out Statement stmt) {
-#line 1490 "cs.ATG"
+#line 1489 "cs.ATG"
stmt = null;
Expect(1);
-#line 1493 "cs.ATG"
+#line 1492 "cs.ATG"
if (t.val != "add") Error("add expected");
Block(
-#line 1494 "cs.ATG"
+#line 1493 "cs.ATG"
out stmt);
}
void RemoveAccessorDecl(
-#line 1497 "cs.ATG"
+#line 1496 "cs.ATG"
out Statement stmt) {
-#line 1498 "cs.ATG"
+#line 1497 "cs.ATG"
stmt = null;
Expect(1);
-#line 1501 "cs.ATG"
+#line 1500 "cs.ATG"
if (t.val != "remove") Error("remove expected");
Block(
-#line 1502 "cs.ATG"
+#line 1501 "cs.ATG"
out stmt);
}
void VariableInitializer(
-#line 1518 "cs.ATG"
+#line 1517 "cs.ATG"
out Expression initializerExpression) {
-#line 1519 "cs.ATG"
+#line 1518 "cs.ATG"
TypeReference type = null; Expression expr = null; initializerExpression = null;
if (StartOf(4)) {
Expr(
-#line 1521 "cs.ATG"
+#line 1520 "cs.ATG"
out initializerExpression);
} else if (la.kind == 15) {
ArrayInitializer(
-#line 1522 "cs.ATG"
+#line 1521 "cs.ATG"
out initializerExpression);
} else if (la.kind == 104) {
lexer.NextToken();
Type(
-#line 1523 "cs.ATG"
+#line 1522 "cs.ATG"
out type);
Expect(17);
Expr(
-#line 1523 "cs.ATG"
+#line 1522 "cs.ATG"
out expr);
Expect(18);
-#line 1523 "cs.ATG"
+#line 1522 "cs.ATG"
initializerExpression = new StackAllocExpression(type, expr);
} else SynErr(163);
}
void Statement() {
-#line 1627 "cs.ATG"
+#line 1626 "cs.ATG"
TypeReference type;
Expression expr;
Statement stmt = null;
Point startPos = la.Location;
if (
-#line 1635 "cs.ATG"
+#line 1634 "cs.ATG"
IsLabel()) {
Expect(1);
-#line 1635 "cs.ATG"
+#line 1634 "cs.ATG"
compilationUnit.AddChild(new LabelStatement(t.val));
Expect(9);
Statement();
} else if (la.kind == 58) {
lexer.NextToken();
Type(
-#line 1638 "cs.ATG"
+#line 1637 "cs.ATG"
out type);
-#line 1638 "cs.ATG"
+#line 1637 "cs.ATG"
LocalVariableDeclaration var = new LocalVariableDeclaration(type, Modifier.Const); string ident = null; var.StartLocation = t.Location;
Expect(1);
-#line 1639 "cs.ATG"
+#line 1638 "cs.ATG"
ident = t.val;
Expect(3);
Expr(
-#line 1640 "cs.ATG"
+#line 1639 "cs.ATG"
out expr);
-#line 1640 "cs.ATG"
+#line 1639 "cs.ATG"
var.Variables.Add(new VariableDeclaration(ident, expr));
while (la.kind == 13) {
lexer.NextToken();
Expect(1);
-#line 1641 "cs.ATG"
+#line 1640 "cs.ATG"
ident = t.val;
Expect(3);
Expr(
-#line 1641 "cs.ATG"
+#line 1640 "cs.ATG"
out expr);
-#line 1641 "cs.ATG"
+#line 1640 "cs.ATG"
var.Variables.Add(new VariableDeclaration(ident, expr));
}
Expect(11);
-#line 1642 "cs.ATG"
+#line 1641 "cs.ATG"
compilationUnit.AddChild(var);
} else if (
-#line 1644 "cs.ATG"
+#line 1643 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1644 "cs.ATG"
+#line 1643 "cs.ATG"
out stmt);
Expect(11);
-#line 1644 "cs.ATG"
+#line 1643 "cs.ATG"
compilationUnit.AddChild(stmt);
} else if (StartOf(22)) {
EmbeddedStatement(
-#line 1645 "cs.ATG"
+#line 1644 "cs.ATG"
out stmt);
-#line 1645 "cs.ATG"
+#line 1644 "cs.ATG"
compilationUnit.AddChild(stmt);
} else SynErr(164);
-#line 1651 "cs.ATG"
+#line 1650 "cs.ATG"
if (stmt != null) {
stmt.StartLocation = startPos;
stmt.EndLocation = t.EndLocation;
@@ -3325,10 +3324,10 @@ out stmt);
}
void Argument(
-#line 1558 "cs.ATG"
+#line 1557 "cs.ATG"
out Expression argumentexpr) {
-#line 1560 "cs.ATG"
+#line 1559 "cs.ATG"
Expression expr;
FieldDirection fd = FieldDirection.None;
@@ -3336,48 +3335,48 @@ out Expression argumentexpr) {
if (la.kind == 98) {
lexer.NextToken();
-#line 1565 "cs.ATG"
+#line 1564 "cs.ATG"
fd = FieldDirection.Ref;
} else {
lexer.NextToken();
-#line 1566 "cs.ATG"
+#line 1565 "cs.ATG"
fd = FieldDirection.Out;
}
}
Expr(
-#line 1568 "cs.ATG"
+#line 1567 "cs.ATG"
out expr);
-#line 1568 "cs.ATG"
+#line 1567 "cs.ATG"
argumentexpr = fd != FieldDirection.None ? argumentexpr = new DirectionExpression(fd, expr) : expr;
}
void ArrayInitializer(
-#line 1587 "cs.ATG"
+#line 1586 "cs.ATG"
out Expression outExpr) {
-#line 1589 "cs.ATG"
+#line 1588 "cs.ATG"
Expression expr = null;
ArrayInitializerExpression initializer = new ArrayInitializerExpression();
Expect(15);
if (StartOf(23)) {
VariableInitializer(
-#line 1594 "cs.ATG"
+#line 1593 "cs.ATG"
out expr);
-#line 1594 "cs.ATG"
+#line 1593 "cs.ATG"
if (expr != null) { initializer.CreateExpressions.Add(expr); }
while (
-#line 1594 "cs.ATG"
+#line 1593 "cs.ATG"
NotFinalComma()) {
Expect(13);
VariableInitializer(
-#line 1594 "cs.ATG"
+#line 1593 "cs.ATG"
out expr);
-#line 1594 "cs.ATG"
+#line 1593 "cs.ATG"
if (expr != null) { initializer.CreateExpressions.Add(expr); }
}
if (la.kind == 13) {
@@ -3386,84 +3385,84 @@ out expr);
}
Expect(16);
-#line 1595 "cs.ATG"
+#line 1594 "cs.ATG"
outExpr = initializer;
}
void AssignmentOperator(
-#line 1571 "cs.ATG"
+#line 1570 "cs.ATG"
out AssignmentOperatorType op) {
-#line 1572 "cs.ATG"
+#line 1571 "cs.ATG"
op = AssignmentOperatorType.None;
switch (la.kind) {
case 3: {
lexer.NextToken();
-#line 1574 "cs.ATG"
+#line 1573 "cs.ATG"
op = AssignmentOperatorType.Assign;
break;
}
case 37: {
lexer.NextToken();
-#line 1575 "cs.ATG"
+#line 1574 "cs.ATG"
op = AssignmentOperatorType.Add;
break;
}
case 38: {
lexer.NextToken();
-#line 1576 "cs.ATG"
+#line 1575 "cs.ATG"
op = AssignmentOperatorType.Subtract;
break;
}
case 39: {
lexer.NextToken();
-#line 1577 "cs.ATG"
+#line 1576 "cs.ATG"
op = AssignmentOperatorType.Multiply;
break;
}
case 40: {
lexer.NextToken();
-#line 1578 "cs.ATG"
+#line 1577 "cs.ATG"
op = AssignmentOperatorType.Divide;
break;
}
case 41: {
lexer.NextToken();
-#line 1579 "cs.ATG"
+#line 1578 "cs.ATG"
op = AssignmentOperatorType.Modulus;
break;
}
case 42: {
lexer.NextToken();
-#line 1580 "cs.ATG"
+#line 1579 "cs.ATG"
op = AssignmentOperatorType.BitwiseAnd;
break;
}
case 43: {
lexer.NextToken();
-#line 1581 "cs.ATG"
+#line 1580 "cs.ATG"
op = AssignmentOperatorType.BitwiseOr;
break;
}
case 44: {
lexer.NextToken();
-#line 1582 "cs.ATG"
+#line 1581 "cs.ATG"
op = AssignmentOperatorType.ExclusiveOr;
break;
}
case 45: {
lexer.NextToken();
-#line 1583 "cs.ATG"
+#line 1582 "cs.ATG"
op = AssignmentOperatorType.ShiftLeft;
break;
}
@@ -3471,7 +3470,7 @@ out AssignmentOperatorType op) {
lexer.NextToken();
Expect(34);
-#line 1584 "cs.ATG"
+#line 1583 "cs.ATG"
op = AssignmentOperatorType.ShiftRight;
break;
}
@@ -3480,66 +3479,66 @@ out AssignmentOperatorType op) {
}
void LocalVariableDecl(
-#line 1598 "cs.ATG"
+#line 1597 "cs.ATG"
out Statement stmt) {
-#line 1600 "cs.ATG"
+#line 1599 "cs.ATG"
TypeReference type;
VariableDeclaration var = null;
LocalVariableDeclaration localVariableDeclaration;
Type(
-#line 1605 "cs.ATG"
+#line 1604 "cs.ATG"
out type);
-#line 1605 "cs.ATG"
+#line 1604 "cs.ATG"
localVariableDeclaration = new LocalVariableDeclaration(type); localVariableDeclaration.StartLocation = t.Location;
LocalVariableDeclarator(
-#line 1606 "cs.ATG"
+#line 1605 "cs.ATG"
out var);
-#line 1606 "cs.ATG"
+#line 1605 "cs.ATG"
localVariableDeclaration.Variables.Add(var);
while (la.kind == 13) {
lexer.NextToken();
LocalVariableDeclarator(
-#line 1607 "cs.ATG"
+#line 1606 "cs.ATG"
out var);
-#line 1607 "cs.ATG"
+#line 1606 "cs.ATG"
localVariableDeclaration.Variables.Add(var);
}
-#line 1608 "cs.ATG"
+#line 1607 "cs.ATG"
stmt = localVariableDeclaration;
}
void LocalVariableDeclarator(
-#line 1611 "cs.ATG"
+#line 1610 "cs.ATG"
out VariableDeclaration var) {
-#line 1612 "cs.ATG"
+#line 1611 "cs.ATG"
Expression expr = null;
Expect(1);
-#line 1615 "cs.ATG"
+#line 1614 "cs.ATG"
var = new VariableDeclaration(t.val);
if (la.kind == 3) {
lexer.NextToken();
VariableInitializer(
-#line 1615 "cs.ATG"
+#line 1614 "cs.ATG"
out expr);
-#line 1615 "cs.ATG"
+#line 1614 "cs.ATG"
var.Initializer = expr;
}
}
void EmbeddedStatement(
-#line 1658 "cs.ATG"
+#line 1657 "cs.ATG"
out Statement statement) {
-#line 1660 "cs.ATG"
+#line 1659 "cs.ATG"
TypeReference type = null;
Expression expr = null;
Statement embeddedStatement = null;
@@ -3547,156 +3546,156 @@ out Statement statement) {
if (la.kind == 15) {
Block(
-#line 1666 "cs.ATG"
+#line 1665 "cs.ATG"
out statement);
} else if (la.kind == 11) {
lexer.NextToken();
-#line 1668 "cs.ATG"
+#line 1667 "cs.ATG"
statement = new EmptyStatement();
} else if (
-#line 1670 "cs.ATG"
+#line 1669 "cs.ATG"
UnCheckedAndLBrace()) {
-#line 1670 "cs.ATG"
+#line 1669 "cs.ATG"
Statement block; bool isChecked = true;
if (la.kind == 56) {
lexer.NextToken();
} else if (la.kind == 116) {
lexer.NextToken();
-#line 1671 "cs.ATG"
+#line 1670 "cs.ATG"
isChecked = false;
} else SynErr(166);
Block(
-#line 1672 "cs.ATG"
+#line 1671 "cs.ATG"
out block);
-#line 1672 "cs.ATG"
+#line 1671 "cs.ATG"
statement = isChecked ? (Statement)new CheckedStatement(block) : (Statement)new UncheckedStatement(block);
} else if (la.kind == 77) {
lexer.NextToken();
-#line 1674 "cs.ATG"
+#line 1673 "cs.ATG"
Statement elseStatement = null;
Expect(19);
Expr(
-#line 1675 "cs.ATG"
+#line 1674 "cs.ATG"
out expr);
Expect(20);
EmbeddedStatement(
-#line 1676 "cs.ATG"
+#line 1675 "cs.ATG"
out embeddedStatement);
if (la.kind == 65) {
lexer.NextToken();
EmbeddedStatement(
-#line 1677 "cs.ATG"
+#line 1676 "cs.ATG"
out elseStatement);
}
-#line 1678 "cs.ATG"
+#line 1677 "cs.ATG"
statement = elseStatement != null ? (Statement)new IfElseStatement(expr, embeddedStatement, elseStatement) : (Statement)new IfElseStatement(expr, embeddedStatement);
} else if (la.kind == 108) {
lexer.NextToken();
-#line 1679 "cs.ATG"
+#line 1678 "cs.ATG"
ArrayList switchSections = new ArrayList(); SwitchSection switchSection;
Expect(19);
Expr(
-#line 1680 "cs.ATG"
+#line 1679 "cs.ATG"
out expr);
Expect(20);
Expect(15);
while (la.kind == 53 || la.kind == 61) {
SwitchSection(
-#line 1681 "cs.ATG"
+#line 1680 "cs.ATG"
out switchSection);
-#line 1681 "cs.ATG"
+#line 1680 "cs.ATG"
switchSections.Add(switchSection);
}
Expect(16);
-#line 1682 "cs.ATG"
+#line 1681 "cs.ATG"
statement = new SwitchStatement(expr, switchSections);
} else if (la.kind == 123) {
lexer.NextToken();
Expect(19);
Expr(
-#line 1684 "cs.ATG"
+#line 1683 "cs.ATG"
out expr);
Expect(20);
EmbeddedStatement(
-#line 1686 "cs.ATG"
+#line 1685 "cs.ATG"
out embeddedStatement);
-#line 1686 "cs.ATG"
+#line 1685 "cs.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start);
} else if (la.kind == 63) {
lexer.NextToken();
EmbeddedStatement(
-#line 1687 "cs.ATG"
+#line 1686 "cs.ATG"
out embeddedStatement);
Expect(123);
Expect(19);
Expr(
-#line 1688 "cs.ATG"
+#line 1687 "cs.ATG"
out expr);
Expect(20);
Expect(11);
-#line 1688 "cs.ATG"
+#line 1687 "cs.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.End);
} else if (la.kind == 74) {
lexer.NextToken();
-#line 1689 "cs.ATG"
+#line 1688 "cs.ATG"
ArrayList initializer = null; ArrayList iterator = null;
Expect(19);
if (StartOf(4)) {
ForInitializer(
-#line 1690 "cs.ATG"
+#line 1689 "cs.ATG"
out initializer);
}
Expect(11);
if (StartOf(4)) {
Expr(
-#line 1691 "cs.ATG"
+#line 1690 "cs.ATG"
out expr);
}
Expect(11);
if (StartOf(4)) {
ForIterator(
-#line 1692 "cs.ATG"
+#line 1691 "cs.ATG"
out iterator);
}
Expect(20);
EmbeddedStatement(
-#line 1693 "cs.ATG"
+#line 1692 "cs.ATG"
out embeddedStatement);
-#line 1693 "cs.ATG"
+#line 1692 "cs.ATG"
statement = new ForStatement(initializer, expr, iterator, embeddedStatement);
} else if (la.kind == 75) {
lexer.NextToken();
Expect(19);
Type(
-#line 1694 "cs.ATG"
+#line 1693 "cs.ATG"
out type);
Expect(1);
-#line 1694 "cs.ATG"
+#line 1693 "cs.ATG"
string varName = t.val; Point start = t.Location;
Expect(79);
Expr(
-#line 1695 "cs.ATG"
+#line 1694 "cs.ATG"
out expr);
Expect(20);
EmbeddedStatement(
-#line 1696 "cs.ATG"
+#line 1695 "cs.ATG"
out embeddedStatement);
-#line 1696 "cs.ATG"
+#line 1695 "cs.ATG"
statement = new ForeachStatement(type, varName , expr, embeddedStatement);
statement.EndLocation = t.EndLocation;
@@ -3704,34 +3703,34 @@ out embeddedStatement);
lexer.NextToken();
Expect(11);
-#line 1700 "cs.ATG"
+#line 1699 "cs.ATG"
statement = new BreakStatement();
} else if (la.kind == 59) {
lexer.NextToken();
Expect(11);
-#line 1701 "cs.ATG"
+#line 1700 "cs.ATG"
statement = new ContinueStatement();
} else if (la.kind == 76) {
GotoStatement(
-#line 1702 "cs.ATG"
+#line 1701 "cs.ATG"
out statement);
} else if (
-#line 1703 "cs.ATG"
+#line 1702 "cs.ATG"
IsYieldStatement()) {
Expect(1);
if (la.kind == 99) {
lexer.NextToken();
Expr(
-#line 1703 "cs.ATG"
+#line 1702 "cs.ATG"
out expr);
-#line 1703 "cs.ATG"
+#line 1702 "cs.ATG"
statement = new YieldStatement(new ReturnStatement(expr));
} else if (la.kind == 51) {
lexer.NextToken();
-#line 1704 "cs.ATG"
+#line 1703 "cs.ATG"
statement = new YieldStatement(new BreakStatement());
} else SynErr(167);
Expect(11);
@@ -3739,513 +3738,513 @@ out expr);
lexer.NextToken();
if (StartOf(4)) {
Expr(
-#line 1705 "cs.ATG"
+#line 1704 "cs.ATG"
out expr);
}
Expect(11);
-#line 1705 "cs.ATG"
+#line 1704 "cs.ATG"
statement = new ReturnStatement(expr);
} else if (la.kind == 110) {
lexer.NextToken();
if (StartOf(4)) {
Expr(
-#line 1706 "cs.ATG"
+#line 1705 "cs.ATG"
out expr);
}
Expect(11);
-#line 1706 "cs.ATG"
+#line 1705 "cs.ATG"
statement = new ThrowStatement(expr);
} else if (StartOf(4)) {
StatementExpr(
-#line 1708 "cs.ATG"
+#line 1707 "cs.ATG"
out statement);
Expect(11);
} else if (la.kind == 112) {
TryStatement(
-#line 1710 "cs.ATG"
+#line 1709 "cs.ATG"
out statement);
} else if (la.kind == 84) {
lexer.NextToken();
Expect(19);
Expr(
-#line 1712 "cs.ATG"
+#line 1711 "cs.ATG"
out expr);
Expect(20);
EmbeddedStatement(
-#line 1713 "cs.ATG"
+#line 1712 "cs.ATG"
out embeddedStatement);
-#line 1713 "cs.ATG"
+#line 1712 "cs.ATG"
statement = new LockStatement(expr, embeddedStatement);
} else if (la.kind == 119) {
-#line 1715 "cs.ATG"
+#line 1714 "cs.ATG"
Statement resourceAcquisitionStmt = null;
lexer.NextToken();
Expect(19);
ResourceAcquisition(
-#line 1717 "cs.ATG"
+#line 1716 "cs.ATG"
out resourceAcquisitionStmt);
Expect(20);
EmbeddedStatement(
-#line 1718 "cs.ATG"
+#line 1717 "cs.ATG"
out embeddedStatement);
-#line 1718 "cs.ATG"
+#line 1717 "cs.ATG"
statement = new UsingStatement(resourceAcquisitionStmt, embeddedStatement);
} else if (la.kind == 117) {
lexer.NextToken();
Block(
-#line 1720 "cs.ATG"
+#line 1719 "cs.ATG"
out embeddedStatement);
-#line 1720 "cs.ATG"
+#line 1719 "cs.ATG"
statement = new UnsafeStatement(embeddedStatement);
} else if (la.kind == 72) {
lexer.NextToken();
Expect(19);
Type(
-#line 1723 "cs.ATG"
+#line 1722 "cs.ATG"
out type);
-#line 1723 "cs.ATG"
+#line 1722 "cs.ATG"
if (type.PointerNestingLevel == 0) Error("can only fix pointer types");
ArrayList pointerDeclarators = new ArrayList(1);
Expect(1);
-#line 1726 "cs.ATG"
+#line 1725 "cs.ATG"
string identifier = t.val;
Expect(3);
Expr(
-#line 1727 "cs.ATG"
+#line 1726 "cs.ATG"
out expr);
-#line 1727 "cs.ATG"
+#line 1726 "cs.ATG"
pointerDeclarators.Add(new VariableDeclaration(identifier, expr));
while (la.kind == 13) {
lexer.NextToken();
Expect(1);
-#line 1729 "cs.ATG"
+#line 1728 "cs.ATG"
identifier = t.val;
Expect(3);
Expr(
-#line 1730 "cs.ATG"
+#line 1729 "cs.ATG"
out expr);
-#line 1730 "cs.ATG"
+#line 1729 "cs.ATG"
pointerDeclarators.Add(new VariableDeclaration(identifier, expr));
}
Expect(20);
EmbeddedStatement(
-#line 1732 "cs.ATG"
+#line 1731 "cs.ATG"
out embeddedStatement);
-#line 1732 "cs.ATG"
+#line 1731 "cs.ATG"
statement = new FixedStatement(type, pointerDeclarators, embeddedStatement);
} else SynErr(168);
}
void SwitchSection(
-#line 1754 "cs.ATG"
+#line 1753 "cs.ATG"
out SwitchSection stmt) {
-#line 1756 "cs.ATG"
+#line 1755 "cs.ATG"
SwitchSection switchSection = new SwitchSection();
CaseLabel label;
SwitchLabel(
-#line 1760 "cs.ATG"
+#line 1759 "cs.ATG"
out label);
-#line 1760 "cs.ATG"
+#line 1759 "cs.ATG"
switchSection.SwitchLabels.Add(label);
while (la.kind == 53 || la.kind == 61) {
SwitchLabel(
-#line 1762 "cs.ATG"
+#line 1761 "cs.ATG"
out label);
-#line 1762 "cs.ATG"
+#line 1761 "cs.ATG"
switchSection.SwitchLabels.Add(label);
}
-#line 1764 "cs.ATG"
+#line 1763 "cs.ATG"
compilationUnit.BlockStart(switchSection);
Statement();
while (StartOf(20)) {
Statement();
}
-#line 1767 "cs.ATG"
+#line 1766 "cs.ATG"
compilationUnit.BlockEnd();
stmt = switchSection;
}
void ForInitializer(
-#line 1735 "cs.ATG"
+#line 1734 "cs.ATG"
out ArrayList initializer) {
-#line 1737 "cs.ATG"
+#line 1736 "cs.ATG"
Statement stmt;
initializer = new ArrayList();
if (
-#line 1741 "cs.ATG"
+#line 1740 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1741 "cs.ATG"
+#line 1740 "cs.ATG"
out stmt);
-#line 1741 "cs.ATG"
+#line 1740 "cs.ATG"
initializer.Add(stmt);
} else if (StartOf(4)) {
StatementExpr(
-#line 1742 "cs.ATG"
+#line 1741 "cs.ATG"
out stmt);
-#line 1742 "cs.ATG"
+#line 1741 "cs.ATG"
initializer.Add(stmt);
while (la.kind == 13) {
lexer.NextToken();
StatementExpr(
-#line 1742 "cs.ATG"
+#line 1741 "cs.ATG"
out stmt);
-#line 1742 "cs.ATG"
+#line 1741 "cs.ATG"
initializer.Add(stmt);
}
-#line 1742 "cs.ATG"
+#line 1741 "cs.ATG"
initializer.Add(stmt);
} else SynErr(169);
}
void ForIterator(
-#line 1745 "cs.ATG"
+#line 1744 "cs.ATG"
out ArrayList iterator) {
-#line 1747 "cs.ATG"
+#line 1746 "cs.ATG"
Statement stmt;
iterator = new ArrayList();
StatementExpr(
-#line 1751 "cs.ATG"
+#line 1750 "cs.ATG"
out stmt);
-#line 1751 "cs.ATG"
+#line 1750 "cs.ATG"
iterator.Add(stmt);
while (la.kind == 13) {
lexer.NextToken();
StatementExpr(
-#line 1751 "cs.ATG"
+#line 1750 "cs.ATG"
out stmt);
-#line 1751 "cs.ATG"
+#line 1750 "cs.ATG"
iterator.Add(stmt);
}
}
void GotoStatement(
-#line 1822 "cs.ATG"
+#line 1821 "cs.ATG"
out Statement stmt) {
-#line 1823 "cs.ATG"
+#line 1822 "cs.ATG"
Expression expr; stmt = null;
Expect(76);
if (la.kind == 1) {
lexer.NextToken();
-#line 1827 "cs.ATG"
+#line 1826 "cs.ATG"
stmt = new GotoStatement(t.val);
Expect(11);
} else if (la.kind == 53) {
lexer.NextToken();
Expr(
-#line 1828 "cs.ATG"
+#line 1827 "cs.ATG"
out expr);
Expect(11);
-#line 1828 "cs.ATG"
+#line 1827 "cs.ATG"
stmt = new GotoCaseStatement(expr);
} else if (la.kind == 61) {
lexer.NextToken();
Expect(11);
-#line 1829 "cs.ATG"
+#line 1828 "cs.ATG"
stmt = new GotoCaseStatement(null);
} else SynErr(170);
}
void StatementExpr(
-#line 1849 "cs.ATG"
+#line 1848 "cs.ATG"
out Statement stmt) {
-#line 1854 "cs.ATG"
+#line 1853 "cs.ATG"
bool mustBeAssignment = la.kind == Tokens.Plus || la.kind == Tokens.Minus ||
la.kind == Tokens.Not || la.kind == Tokens.BitwiseComplement ||
la.kind == Tokens.Times || la.kind == Tokens.BitwiseAnd || IsTypeCast();
Expression expr = null;
UnaryExpr(
-#line 1860 "cs.ATG"
+#line 1859 "cs.ATG"
out expr);
if (StartOf(6)) {
-#line 1863 "cs.ATG"
+#line 1862 "cs.ATG"
AssignmentOperatorType op; Expression val;
AssignmentOperator(
-#line 1863 "cs.ATG"
+#line 1862 "cs.ATG"
out op);
Expr(
-#line 1863 "cs.ATG"
+#line 1862 "cs.ATG"
out val);
-#line 1863 "cs.ATG"
+#line 1862 "cs.ATG"
expr = new AssignmentExpression(expr, op, val);
} else if (la.kind == 11 || la.kind == 13 || la.kind == 20) {
-#line 1864 "cs.ATG"
+#line 1863 "cs.ATG"
if (mustBeAssignment) Error("error in assignment.");
} else SynErr(171);
-#line 1865 "cs.ATG"
+#line 1864 "cs.ATG"
stmt = new StatementExpression(expr);
}
void TryStatement(
-#line 1779 "cs.ATG"
+#line 1778 "cs.ATG"
out Statement tryStatement) {
-#line 1781 "cs.ATG"
+#line 1780 "cs.ATG"
Statement blockStmt = null, finallyStmt = null;
ArrayList catchClauses = null;
Expect(112);
Block(
-#line 1785 "cs.ATG"
+#line 1784 "cs.ATG"
out blockStmt);
if (la.kind == 54) {
CatchClauses(
-#line 1787 "cs.ATG"
+#line 1786 "cs.ATG"
out catchClauses);
if (la.kind == 71) {
lexer.NextToken();
Block(
-#line 1787 "cs.ATG"
+#line 1786 "cs.ATG"
out finallyStmt);
}
} else if (la.kind == 71) {
lexer.NextToken();
Block(
-#line 1788 "cs.ATG"
+#line 1787 "cs.ATG"
out finallyStmt);
} else SynErr(172);
-#line 1791 "cs.ATG"
+#line 1790 "cs.ATG"
tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt);
}
void ResourceAcquisition(
-#line 1833 "cs.ATG"
+#line 1832 "cs.ATG"
out Statement stmt) {
-#line 1835 "cs.ATG"
+#line 1834 "cs.ATG"
stmt = null;
Expression expr;
if (
-#line 1840 "cs.ATG"
+#line 1839 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1840 "cs.ATG"
+#line 1839 "cs.ATG"
out stmt);
} else if (StartOf(4)) {
Expr(
-#line 1841 "cs.ATG"
+#line 1840 "cs.ATG"
out expr);
-#line 1845 "cs.ATG"
+#line 1844 "cs.ATG"
stmt = new StatementExpression(expr);
} else SynErr(173);
}
void SwitchLabel(
-#line 1772 "cs.ATG"
+#line 1771 "cs.ATG"
out CaseLabel label) {
-#line 1773 "cs.ATG"
+#line 1772 "cs.ATG"
Expression expr = null; label = null;
if (la.kind == 53) {
lexer.NextToken();
Expr(
-#line 1775 "cs.ATG"
+#line 1774 "cs.ATG"
out expr);
Expect(9);
-#line 1775 "cs.ATG"
+#line 1774 "cs.ATG"
label = new CaseLabel(expr);
} else if (la.kind == 61) {
lexer.NextToken();
Expect(9);
-#line 1776 "cs.ATG"
+#line 1775 "cs.ATG"
label = new CaseLabel();
} else SynErr(174);
}
void CatchClauses(
-#line 1796 "cs.ATG"
+#line 1795 "cs.ATG"
out ArrayList catchClauses) {
-#line 1798 "cs.ATG"
+#line 1797 "cs.ATG"
catchClauses = new ArrayList();
Expect(54);
-#line 1801 "cs.ATG"
+#line 1800 "cs.ATG"
string identifier;
Statement stmt;
TypeReference typeRef;
if (la.kind == 15) {
Block(
-#line 1807 "cs.ATG"
+#line 1806 "cs.ATG"
out stmt);
-#line 1807 "cs.ATG"
+#line 1806 "cs.ATG"
catchClauses.Add(new CatchClause(stmt));
} else if (la.kind == 19) {
lexer.NextToken();
ClassType(
-#line 1809 "cs.ATG"
+#line 1808 "cs.ATG"
out typeRef);
-#line 1809 "cs.ATG"
+#line 1808 "cs.ATG"
identifier = null;
if (la.kind == 1) {
lexer.NextToken();
-#line 1810 "cs.ATG"
+#line 1809 "cs.ATG"
identifier = t.val;
}
Expect(20);
Block(
-#line 1811 "cs.ATG"
+#line 1810 "cs.ATG"
out stmt);
-#line 1812 "cs.ATG"
+#line 1811 "cs.ATG"
catchClauses.Add(new CatchClause(typeRef, identifier, stmt));
while (
-#line 1813 "cs.ATG"
+#line 1812 "cs.ATG"
IsTypedCatch()) {
Expect(54);
Expect(19);
ClassType(
-#line 1813 "cs.ATG"
+#line 1812 "cs.ATG"
out typeRef);
-#line 1813 "cs.ATG"
+#line 1812 "cs.ATG"
identifier = null;
if (la.kind == 1) {
lexer.NextToken();
-#line 1814 "cs.ATG"
+#line 1813 "cs.ATG"
identifier = t.val;
}
Expect(20);
Block(
-#line 1815 "cs.ATG"
+#line 1814 "cs.ATG"
out stmt);
-#line 1816 "cs.ATG"
+#line 1815 "cs.ATG"
catchClauses.Add(new CatchClause(typeRef, identifier, stmt));
}
if (la.kind == 54) {
lexer.NextToken();
Block(
-#line 1818 "cs.ATG"
+#line 1817 "cs.ATG"
out stmt);
-#line 1818 "cs.ATG"
+#line 1817 "cs.ATG"
catchClauses.Add(new CatchClause(stmt));
}
} else SynErr(175);
}
void UnaryExpr(
-#line 1881 "cs.ATG"
+#line 1880 "cs.ATG"
out Expression uExpr) {
-#line 1883 "cs.ATG"
+#line 1882 "cs.ATG"
TypeReference type = null;
Expression expr;
ArrayList expressions = new ArrayList();
uExpr = null;
while (StartOf(24) ||
-#line 1907 "cs.ATG"
+#line 1906 "cs.ATG"
IsTypeCast()) {
if (la.kind == 4) {
lexer.NextToken();
-#line 1892 "cs.ATG"
+#line 1891 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Plus));
} else if (la.kind == 5) {
lexer.NextToken();
-#line 1893 "cs.ATG"
+#line 1892 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Minus));
} else if (la.kind == 23) {
lexer.NextToken();
-#line 1894 "cs.ATG"
+#line 1893 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Not));
} else if (la.kind == 26) {
lexer.NextToken();
-#line 1895 "cs.ATG"
+#line 1894 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.BitNot));
} else if (la.kind == 6) {
lexer.NextToken();
-#line 1896 "cs.ATG"
+#line 1895 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Star));
} else if (la.kind == 30) {
lexer.NextToken();
-#line 1897 "cs.ATG"
+#line 1896 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Increment));
} else if (la.kind == 31) {
lexer.NextToken();
-#line 1898 "cs.ATG"
+#line 1897 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Decrement));
} else if (la.kind == 27) {
lexer.NextToken();
-#line 1899 "cs.ATG"
+#line 1898 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.BitWiseAnd));
} else {
Expect(19);
Type(
-#line 1907 "cs.ATG"
+#line 1906 "cs.ATG"
out type);
Expect(20);
-#line 1907 "cs.ATG"
+#line 1906 "cs.ATG"
expressions.Add(new CastExpression(type));
}
}
PrimaryExpr(
-#line 1911 "cs.ATG"
+#line 1910 "cs.ATG"
out expr);
-#line 1911 "cs.ATG"
+#line 1910 "cs.ATG"
for (int i = 0; i < expressions.Count; ++i) {
Expression nextExpression = i + 1 < expressions.Count ? (Expression)expressions[i + 1] : expr;
if (expressions[i] is CastExpression) {
@@ -4263,33 +4262,33 @@ out expr);
}
void ConditionalOrExpr(
-#line 2094 "cs.ATG"
+#line 2093 "cs.ATG"
ref Expression outExpr) {
-#line 2095 "cs.ATG"
+#line 2094 "cs.ATG"
Expression expr;
ConditionalAndExpr(
-#line 2097 "cs.ATG"
+#line 2096 "cs.ATG"
ref outExpr);
while (la.kind == 25) {
lexer.NextToken();
UnaryExpr(
-#line 2097 "cs.ATG"
+#line 2096 "cs.ATG"
out expr);
ConditionalAndExpr(
-#line 2097 "cs.ATG"
+#line 2096 "cs.ATG"
ref expr);
-#line 2097 "cs.ATG"
+#line 2096 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalOr, expr);
}
}
void PrimaryExpr(
-#line 1928 "cs.ATG"
+#line 1927 "cs.ATG"
out Expression pexpr) {
-#line 1930 "cs.ATG"
+#line 1929 "cs.ATG"
TypeReference type = null;
List typeList = null;
bool isArrayCreation = false;
@@ -4299,340 +4298,340 @@ out Expression pexpr) {
if (la.kind == 111) {
lexer.NextToken();
-#line 1938 "cs.ATG"
+#line 1937 "cs.ATG"
pexpr = new PrimitiveExpression(true, "true");
} else if (la.kind == 70) {
lexer.NextToken();
-#line 1939 "cs.ATG"
+#line 1938 "cs.ATG"
pexpr = new PrimitiveExpression(false, "false");
} else if (la.kind == 88) {
lexer.NextToken();
-#line 1940 "cs.ATG"
+#line 1939 "cs.ATG"
pexpr = new PrimitiveExpression(null, "null");
} else if (la.kind == 2) {
lexer.NextToken();
-#line 1941 "cs.ATG"
+#line 1940 "cs.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (
-#line 1942 "cs.ATG"
+#line 1941 "cs.ATG"
la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) {
TypeName(
-#line 1943 "cs.ATG"
+#line 1942 "cs.ATG"
out type);
-#line 1943 "cs.ATG"
+#line 1942 "cs.ATG"
pexpr = new TypeReferenceExpression(type);
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1945 "cs.ATG"
+#line 1944 "cs.ATG"
pexpr = new IdentifierExpression(t.val);
} else if (la.kind == 19) {
lexer.NextToken();
Expr(
-#line 1947 "cs.ATG"
+#line 1946 "cs.ATG"
out expr);
Expect(20);
-#line 1947 "cs.ATG"
+#line 1946 "cs.ATG"
pexpr = new ParenthesizedExpression(expr);
} else if (StartOf(25)) {
-#line 1949 "cs.ATG"
+#line 1948 "cs.ATG"
string val = null;
switch (la.kind) {
case 50: {
lexer.NextToken();
-#line 1951 "cs.ATG"
+#line 1950 "cs.ATG"
val = "bool";
break;
}
case 52: {
lexer.NextToken();
-#line 1952 "cs.ATG"
+#line 1951 "cs.ATG"
val = "byte";
break;
}
case 55: {
lexer.NextToken();
-#line 1953 "cs.ATG"
+#line 1952 "cs.ATG"
val = "char";
break;
}
case 60: {
lexer.NextToken();
-#line 1954 "cs.ATG"
+#line 1953 "cs.ATG"
val = "decimal";
break;
}
case 64: {
lexer.NextToken();
-#line 1955 "cs.ATG"
+#line 1954 "cs.ATG"
val = "double";
break;
}
case 73: {
lexer.NextToken();
-#line 1956 "cs.ATG"
+#line 1955 "cs.ATG"
val = "float";
break;
}
case 80: {
lexer.NextToken();
-#line 1957 "cs.ATG"
+#line 1956 "cs.ATG"
val = "int";
break;
}
case 85: {
lexer.NextToken();
-#line 1958 "cs.ATG"
+#line 1957 "cs.ATG"
val = "long";
break;
}
case 89: {
lexer.NextToken();
-#line 1959 "cs.ATG"
+#line 1958 "cs.ATG"
val = "object";
break;
}
case 100: {
lexer.NextToken();
-#line 1960 "cs.ATG"
+#line 1959 "cs.ATG"
val = "sbyte";
break;
}
case 102: {
lexer.NextToken();
-#line 1961 "cs.ATG"
+#line 1960 "cs.ATG"
val = "short";
break;
}
case 106: {
lexer.NextToken();
-#line 1962 "cs.ATG"
+#line 1961 "cs.ATG"
val = "string";
break;
}
case 114: {
lexer.NextToken();
-#line 1963 "cs.ATG"
+#line 1962 "cs.ATG"
val = "uint";
break;
}
case 115: {
lexer.NextToken();
-#line 1964 "cs.ATG"
+#line 1963 "cs.ATG"
val = "ulong";
break;
}
case 118: {
lexer.NextToken();
-#line 1965 "cs.ATG"
+#line 1964 "cs.ATG"
val = "ushort";
break;
}
}
-#line 1966 "cs.ATG"
+#line 1965 "cs.ATG"
t.val = "";
Expect(14);
Expect(1);
-#line 1966 "cs.ATG"
+#line 1965 "cs.ATG"
pexpr = new FieldReferenceExpression(new TypeReferenceExpression(val), t.val);
} else if (la.kind == 109) {
lexer.NextToken();
-#line 1968 "cs.ATG"
+#line 1967 "cs.ATG"
pexpr = new ThisReferenceExpression();
} else if (la.kind == 49) {
lexer.NextToken();
-#line 1970 "cs.ATG"
+#line 1969 "cs.ATG"
Expression retExpr = new BaseReferenceExpression();
if (la.kind == 14) {
lexer.NextToken();
Expect(1);
-#line 1972 "cs.ATG"
+#line 1971 "cs.ATG"
retExpr = new FieldReferenceExpression(retExpr, t.val);
} else if (la.kind == 17) {
lexer.NextToken();
Expr(
-#line 1973 "cs.ATG"
+#line 1972 "cs.ATG"
out expr);
-#line 1973 "cs.ATG"
+#line 1972 "cs.ATG"
ArrayList indices = new ArrayList(); if (expr != null) { indices.Add(expr); }
while (la.kind == 13) {
lexer.NextToken();
Expr(
-#line 1974 "cs.ATG"
+#line 1973 "cs.ATG"
out expr);
-#line 1974 "cs.ATG"
+#line 1973 "cs.ATG"
if (expr != null) { indices.Add(expr); }
}
Expect(18);
-#line 1975 "cs.ATG"
+#line 1974 "cs.ATG"
retExpr = new IndexerExpression(retExpr, indices);
} else SynErr(176);
-#line 1976 "cs.ATG"
+#line 1975 "cs.ATG"
pexpr = retExpr;
} else if (la.kind == 87) {
lexer.NextToken();
NonArrayType(
-#line 1977 "cs.ATG"
+#line 1976 "cs.ATG"
out type);
-#line 1977 "cs.ATG"
+#line 1976 "cs.ATG"
ArrayList parameters = new ArrayList();
if (la.kind == 19) {
lexer.NextToken();
-#line 1982 "cs.ATG"
+#line 1981 "cs.ATG"
ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters);
if (StartOf(21)) {
Argument(
-#line 1983 "cs.ATG"
+#line 1982 "cs.ATG"
out expr);
-#line 1983 "cs.ATG"
+#line 1982 "cs.ATG"
if (expr != null) { parameters.Add(expr); }
while (la.kind == 13) {
lexer.NextToken();
Argument(
-#line 1984 "cs.ATG"
+#line 1983 "cs.ATG"
out expr);
-#line 1984 "cs.ATG"
+#line 1983 "cs.ATG"
if (expr != null) { parameters.Add(expr); }
}
}
Expect(20);
-#line 1986 "cs.ATG"
+#line 1985 "cs.ATG"
pexpr = oce;
} else if (la.kind == 17) {
-#line 1988 "cs.ATG"
+#line 1987 "cs.ATG"
isArrayCreation = true; ArrayCreateExpression ace = new ArrayCreateExpression(type); pexpr = ace;
lexer.NextToken();
-#line 1989 "cs.ATG"
+#line 1988 "cs.ATG"
int dims = 0;
ArrayList rank = new ArrayList();
ArrayList parameterExpression = new ArrayList();
if (StartOf(4)) {
Expr(
-#line 1993 "cs.ATG"
+#line 1992 "cs.ATG"
out expr);
-#line 1993 "cs.ATG"
+#line 1992 "cs.ATG"
if (expr != null) { parameterExpression.Add(expr); }
while (la.kind == 13) {
lexer.NextToken();
Expr(
-#line 1995 "cs.ATG"
+#line 1994 "cs.ATG"
out expr);
-#line 1995 "cs.ATG"
+#line 1994 "cs.ATG"
if (expr != null) { parameterExpression.Add(expr); }
}
Expect(18);
-#line 1997 "cs.ATG"
+#line 1996 "cs.ATG"
parameters.Add(new ArrayCreationParameter(parameterExpression));
ace.Parameters = parameters;
while (
-#line 2000 "cs.ATG"
+#line 1999 "cs.ATG"
IsDims()) {
Expect(17);
-#line 2000 "cs.ATG"
+#line 1999 "cs.ATG"
dims =0;
while (la.kind == 13) {
lexer.NextToken();
-#line 2001 "cs.ATG"
+#line 2000 "cs.ATG"
dims++;
}
-#line 2001 "cs.ATG"
+#line 2000 "cs.ATG"
rank.Add(dims);
parameters.Add(new ArrayCreationParameter(dims));
Expect(18);
}
-#line 2005 "cs.ATG"
+#line 2004 "cs.ATG"
if (rank.Count > 0) {
ace.Rank = (int[])rank.ToArray(typeof (int));
}
if (la.kind == 15) {
ArrayInitializer(
-#line 2009 "cs.ATG"
+#line 2008 "cs.ATG"
out expr);
-#line 2009 "cs.ATG"
+#line 2008 "cs.ATG"
ace.ArrayInitializer = (ArrayInitializerExpression)expr;
}
} else if (la.kind == 13 || la.kind == 18) {
while (la.kind == 13) {
lexer.NextToken();
-#line 2011 "cs.ATG"
+#line 2010 "cs.ATG"
dims++;
}
-#line 2012 "cs.ATG"
+#line 2011 "cs.ATG"
parameters.Add(new ArrayCreationParameter(dims));
Expect(18);
while (
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
IsDims()) {
Expect(17);
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
dims =0;
while (la.kind == 13) {
lexer.NextToken();
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
dims++;
}
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
parameters.Add(new ArrayCreationParameter(dims));
Expect(18);
}
ArrayInitializer(
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
out expr);
-#line 2014 "cs.ATG"
+#line 2013 "cs.ATG"
ace.ArrayInitializer = (ArrayInitializerExpression)expr; ace.Parameters = parameters;
} else SynErr(177);
} else SynErr(178);
@@ -4640,192 +4639,192 @@ out expr);
lexer.NextToken();
Expect(19);
if (
-#line 2020 "cs.ATG"
+#line 2019 "cs.ATG"
NotVoidPointer()) {
Expect(121);
-#line 2020 "cs.ATG"
+#line 2019 "cs.ATG"
type = new TypeReference("void");
} else if (StartOf(8)) {
Type(
-#line 2021 "cs.ATG"
+#line 2020 "cs.ATG"
out type);
} else SynErr(179);
Expect(20);
-#line 2022 "cs.ATG"
+#line 2021 "cs.ATG"
pexpr = new TypeOfExpression(type);
} else if (la.kind == 103) {
lexer.NextToken();
Expect(19);
Type(
-#line 2023 "cs.ATG"
+#line 2022 "cs.ATG"
out type);
Expect(20);
-#line 2023 "cs.ATG"
+#line 2022 "cs.ATG"
pexpr = new SizeOfExpression(type);
} else if (la.kind == 56) {
lexer.NextToken();
Expect(19);
Expr(
-#line 2024 "cs.ATG"
+#line 2023 "cs.ATG"
out expr);
Expect(20);
-#line 2024 "cs.ATG"
+#line 2023 "cs.ATG"
pexpr = new CheckedExpression(expr);
} else if (la.kind == 116) {
lexer.NextToken();
Expect(19);
Expr(
-#line 2025 "cs.ATG"
+#line 2024 "cs.ATG"
out expr);
Expect(20);
-#line 2025 "cs.ATG"
+#line 2024 "cs.ATG"
pexpr = new UncheckedExpression(expr);
} else if (la.kind == 62) {
lexer.NextToken();
AnonymousMethodExpr(
-#line 2026 "cs.ATG"
+#line 2025 "cs.ATG"
out expr);
-#line 2026 "cs.ATG"
+#line 2025 "cs.ATG"
pexpr = expr;
} else SynErr(180);
while (StartOf(26) ||
-#line 2047 "cs.ATG"
+#line 2046 "cs.ATG"
IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr) ||
-#line 2055 "cs.ATG"
+#line 2054 "cs.ATG"
IsGenericFollowedBy(Tokens.OpenParenthesis)) {
if (la.kind == 30 || la.kind == 31) {
if (la.kind == 30) {
lexer.NextToken();
-#line 2030 "cs.ATG"
+#line 2029 "cs.ATG"
pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostIncrement);
} else if (la.kind == 31) {
lexer.NextToken();
-#line 2031 "cs.ATG"
+#line 2030 "cs.ATG"
pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostDecrement);
} else SynErr(181);
} else if (la.kind == 46) {
lexer.NextToken();
Expect(1);
-#line 2034 "cs.ATG"
+#line 2033 "cs.ATG"
pexpr = new PointerReferenceExpression(pexpr, t.val);
} else if (la.kind == 14) {
lexer.NextToken();
Expect(1);
-#line 2035 "cs.ATG"
+#line 2034 "cs.ATG"
pexpr = new FieldReferenceExpression(pexpr, t.val);
} else if (
-#line 2047 "cs.ATG"
+#line 2046 "cs.ATG"
IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr)) {
TypeArgumentList(
-#line 2048 "cs.ATG"
+#line 2047 "cs.ATG"
out typeList);
Expect(14);
Expect(1);
-#line 2049 "cs.ATG"
+#line 2048 "cs.ATG"
pexpr = new FieldReferenceExpression(GetTypeReferenceExpression(pexpr, typeList), t.val);
} else if (la.kind == 19) {
lexer.NextToken();
-#line 2051 "cs.ATG"
+#line 2050 "cs.ATG"
ArrayList parameters = new ArrayList();
if (StartOf(21)) {
Argument(
-#line 2052 "cs.ATG"
+#line 2051 "cs.ATG"
out expr);
-#line 2052 "cs.ATG"
+#line 2051 "cs.ATG"
if (expr != null) {parameters.Add(expr);}
while (la.kind == 13) {
lexer.NextToken();
Argument(
-#line 2053 "cs.ATG"
+#line 2052 "cs.ATG"
out expr);
-#line 2053 "cs.ATG"
+#line 2052 "cs.ATG"
if (expr != null) {parameters.Add(expr);}
}
}
Expect(20);
-#line 2054 "cs.ATG"
+#line 2053 "cs.ATG"
pexpr = new InvocationExpression(pexpr, parameters);
} else if (
-#line 2055 "cs.ATG"
+#line 2054 "cs.ATG"
IsGenericFollowedBy(Tokens.OpenParenthesis)) {
TypeArgumentList(
-#line 2055 "cs.ATG"
+#line 2054 "cs.ATG"
out typeList);
Expect(19);
-#line 2056 "cs.ATG"
+#line 2055 "cs.ATG"
ArrayList parameters = new ArrayList();
if (StartOf(21)) {
Argument(
-#line 2057 "cs.ATG"
+#line 2056 "cs.ATG"
out expr);
-#line 2057 "cs.ATG"
+#line 2056 "cs.ATG"
if (expr != null) {parameters.Add(expr);}
while (la.kind == 13) {
lexer.NextToken();
Argument(
-#line 2058 "cs.ATG"
+#line 2057 "cs.ATG"
out expr);
-#line 2058 "cs.ATG"
+#line 2057 "cs.ATG"
if (expr != null) {parameters.Add(expr);}
}
}
Expect(20);
-#line 2059 "cs.ATG"
+#line 2058 "cs.ATG"
pexpr = new InvocationExpression(pexpr, parameters, typeList);
} else {
-#line 2061 "cs.ATG"
+#line 2060 "cs.ATG"
if (isArrayCreation) Error("element access not allow on array creation");
ArrayList indices = new ArrayList();
lexer.NextToken();
Expr(
-#line 2064 "cs.ATG"
+#line 2063 "cs.ATG"
out expr);
-#line 2064 "cs.ATG"
+#line 2063 "cs.ATG"
if (expr != null) { indices.Add(expr); }
while (la.kind == 13) {
lexer.NextToken();
Expr(
-#line 2065 "cs.ATG"
+#line 2064 "cs.ATG"
out expr);
-#line 2065 "cs.ATG"
+#line 2064 "cs.ATG"
if (expr != null) { indices.Add(expr); }
}
Expect(18);
-#line 2066 "cs.ATG"
+#line 2065 "cs.ATG"
pexpr = new IndexerExpression(pexpr, indices);
}
}
}
void AnonymousMethodExpr(
-#line 2070 "cs.ATG"
+#line 2069 "cs.ATG"
out Expression outExpr) {
-#line 2072 "cs.ATG"
+#line 2071 "cs.ATG"
AnonymousMethodExpression expr = new AnonymousMethodExpression();
expr.StartLocation = t.Location;
Statement stmt;
@@ -4835,336 +4834,336 @@ out Expression outExpr) {
Expect(19);
if (StartOf(9)) {
FormalParameterList(
-#line 2080 "cs.ATG"
+#line 2079 "cs.ATG"
p);
-#line 2080 "cs.ATG"
+#line 2079 "cs.ATG"
expr.Parameters = p;
}
Expect(20);
-#line 2084 "cs.ATG"
+#line 2083 "cs.ATG"
if (compilationUnit != null) {
Block(
-#line 2085 "cs.ATG"
+#line 2084 "cs.ATG"
out stmt);
-#line 2085 "cs.ATG"
+#line 2084 "cs.ATG"
expr.Body = (BlockStatement)stmt;
-#line 2086 "cs.ATG"
+#line 2085 "cs.ATG"
} else {
Expect(15);
-#line 2088 "cs.ATG"
+#line 2087 "cs.ATG"
lexer.SkipCurrentBlock();
Expect(16);
-#line 2090 "cs.ATG"
+#line 2089 "cs.ATG"
}
-#line 2091 "cs.ATG"
+#line 2090 "cs.ATG"
expr.EndLocation = t.Location;
}
void TypeArgumentList(
-#line 2240 "cs.ATG"
+#line 2239 "cs.ATG"
out List types) {
-#line 2242 "cs.ATG"
+#line 2241 "cs.ATG"
types = new List();
TypeReference type = null;
Expect(22);
Type(
-#line 2246 "cs.ATG"
+#line 2245 "cs.ATG"
out type);
-#line 2246 "cs.ATG"
+#line 2245 "cs.ATG"
types.Add(type);
while (la.kind == 13) {
lexer.NextToken();
Type(
-#line 2247 "cs.ATG"
+#line 2246 "cs.ATG"
out type);
-#line 2247 "cs.ATG"
+#line 2246 "cs.ATG"
types.Add(type);
}
Expect(21);
}
void ConditionalAndExpr(
-#line 2100 "cs.ATG"
+#line 2099 "cs.ATG"
ref Expression outExpr) {
-#line 2101 "cs.ATG"
+#line 2100 "cs.ATG"
Expression expr;
InclusiveOrExpr(
-#line 2103 "cs.ATG"
+#line 2102 "cs.ATG"
ref outExpr);
while (la.kind == 24) {
lexer.NextToken();
UnaryExpr(
-#line 2103 "cs.ATG"
+#line 2102 "cs.ATG"
out expr);
InclusiveOrExpr(
-#line 2103 "cs.ATG"
+#line 2102 "cs.ATG"
ref expr);
-#line 2103 "cs.ATG"
+#line 2102 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalAnd, expr);
}
}
void InclusiveOrExpr(
-#line 2106 "cs.ATG"
+#line 2105 "cs.ATG"
ref Expression outExpr) {
-#line 2107 "cs.ATG"
+#line 2106 "cs.ATG"
Expression expr;
ExclusiveOrExpr(
-#line 2109 "cs.ATG"
+#line 2108 "cs.ATG"
ref outExpr);
while (la.kind == 28) {
lexer.NextToken();
UnaryExpr(
-#line 2109 "cs.ATG"
+#line 2108 "cs.ATG"
out expr);
ExclusiveOrExpr(
-#line 2109 "cs.ATG"
+#line 2108 "cs.ATG"
ref expr);
-#line 2109 "cs.ATG"
+#line 2108 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseOr, expr);
}
}
void ExclusiveOrExpr(
-#line 2112 "cs.ATG"
+#line 2111 "cs.ATG"
ref Expression outExpr) {
-#line 2113 "cs.ATG"
+#line 2112 "cs.ATG"
Expression expr;
AndExpr(
-#line 2115 "cs.ATG"
+#line 2114 "cs.ATG"
ref outExpr);
while (la.kind == 29) {
lexer.NextToken();
UnaryExpr(
-#line 2115 "cs.ATG"
+#line 2114 "cs.ATG"
out expr);
AndExpr(
-#line 2115 "cs.ATG"
+#line 2114 "cs.ATG"
ref expr);
-#line 2115 "cs.ATG"
+#line 2114 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.ExclusiveOr, expr);
}
}
void AndExpr(
-#line 2118 "cs.ATG"
+#line 2117 "cs.ATG"
ref Expression outExpr) {
-#line 2119 "cs.ATG"
+#line 2118 "cs.ATG"
Expression expr;
EqualityExpr(
-#line 2121 "cs.ATG"
+#line 2120 "cs.ATG"
ref outExpr);
while (la.kind == 27) {
lexer.NextToken();
UnaryExpr(
-#line 2121 "cs.ATG"
+#line 2120 "cs.ATG"
out expr);
EqualityExpr(
-#line 2121 "cs.ATG"
+#line 2120 "cs.ATG"
ref expr);
-#line 2121 "cs.ATG"
+#line 2120 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseAnd, expr);
}
}
void EqualityExpr(
-#line 2124 "cs.ATG"
+#line 2123 "cs.ATG"
ref Expression outExpr) {
-#line 2126 "cs.ATG"
+#line 2125 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
RelationalExpr(
-#line 2130 "cs.ATG"
+#line 2129 "cs.ATG"
ref outExpr);
while (la.kind == 32 || la.kind == 33) {
if (la.kind == 33) {
lexer.NextToken();
-#line 2133 "cs.ATG"
+#line 2132 "cs.ATG"
op = BinaryOperatorType.InEquality;
} else {
lexer.NextToken();
-#line 2134 "cs.ATG"
+#line 2133 "cs.ATG"
op = BinaryOperatorType.Equality;
}
UnaryExpr(
-#line 2136 "cs.ATG"
+#line 2135 "cs.ATG"
out expr);
RelationalExpr(
-#line 2136 "cs.ATG"
+#line 2135 "cs.ATG"
ref expr);
-#line 2136 "cs.ATG"
+#line 2135 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void RelationalExpr(
-#line 2140 "cs.ATG"
+#line 2139 "cs.ATG"
ref Expression outExpr) {
-#line 2142 "cs.ATG"
+#line 2141 "cs.ATG"
TypeReference type;
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
ShiftExpr(
-#line 2147 "cs.ATG"
+#line 2146 "cs.ATG"
ref outExpr);
while (StartOf(27)) {
if (StartOf(28)) {
if (la.kind == 22) {
lexer.NextToken();
-#line 2150 "cs.ATG"
+#line 2149 "cs.ATG"
op = BinaryOperatorType.LessThan;
} else if (la.kind == 21) {
lexer.NextToken();
-#line 2151 "cs.ATG"
+#line 2150 "cs.ATG"
op = BinaryOperatorType.GreaterThan;
} else if (la.kind == 35) {
lexer.NextToken();
-#line 2152 "cs.ATG"
+#line 2151 "cs.ATG"
op = BinaryOperatorType.LessThanOrEqual;
} else if (la.kind == 34) {
lexer.NextToken();
-#line 2153 "cs.ATG"
+#line 2152 "cs.ATG"
op = BinaryOperatorType.GreaterThanOrEqual;
} else SynErr(182);
UnaryExpr(
-#line 2155 "cs.ATG"
+#line 2154 "cs.ATG"
out expr);
ShiftExpr(
-#line 2155 "cs.ATG"
+#line 2154 "cs.ATG"
ref expr);
-#line 2155 "cs.ATG"
+#line 2154 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
} else {
if (la.kind == 83) {
lexer.NextToken();
-#line 2158 "cs.ATG"
+#line 2157 "cs.ATG"
op = BinaryOperatorType.TypeCheck;
} else if (la.kind == 48) {
lexer.NextToken();
-#line 2159 "cs.ATG"
+#line 2158 "cs.ATG"
op = BinaryOperatorType.AsCast;
} else SynErr(183);
Type(
-#line 2161 "cs.ATG"
+#line 2160 "cs.ATG"
out type);
-#line 2161 "cs.ATG"
+#line 2160 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, new TypeReferenceExpression(type));
}
}
}
void ShiftExpr(
-#line 2165 "cs.ATG"
+#line 2164 "cs.ATG"
ref Expression outExpr) {
-#line 2167 "cs.ATG"
+#line 2166 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
AdditiveExpr(
-#line 2171 "cs.ATG"
+#line 2170 "cs.ATG"
ref outExpr);
while (la.kind == 36 ||
-#line 2174 "cs.ATG"
+#line 2173 "cs.ATG"
IsShiftRight()) {
if (la.kind == 36) {
lexer.NextToken();
-#line 2173 "cs.ATG"
+#line 2172 "cs.ATG"
op = BinaryOperatorType.ShiftLeft;
} else {
Expect(21);
Expect(21);
-#line 2175 "cs.ATG"
+#line 2174 "cs.ATG"
op = BinaryOperatorType.ShiftRight;
}
UnaryExpr(
-#line 2178 "cs.ATG"
+#line 2177 "cs.ATG"
out expr);
AdditiveExpr(
-#line 2178 "cs.ATG"
+#line 2177 "cs.ATG"
ref expr);
-#line 2178 "cs.ATG"
+#line 2177 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void AdditiveExpr(
-#line 2182 "cs.ATG"
+#line 2181 "cs.ATG"
ref Expression outExpr) {
-#line 2184 "cs.ATG"
+#line 2183 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
MultiplicativeExpr(
-#line 2188 "cs.ATG"
+#line 2187 "cs.ATG"
ref outExpr);
while (la.kind == 4 || la.kind == 5) {
if (la.kind == 4) {
lexer.NextToken();
-#line 2191 "cs.ATG"
+#line 2190 "cs.ATG"
op = BinaryOperatorType.Add;
} else {
lexer.NextToken();
-#line 2192 "cs.ATG"
+#line 2191 "cs.ATG"
op = BinaryOperatorType.Subtract;
}
UnaryExpr(
-#line 2194 "cs.ATG"
+#line 2193 "cs.ATG"
out expr);
MultiplicativeExpr(
-#line 2194 "cs.ATG"
+#line 2193 "cs.ATG"
ref expr);
-#line 2194 "cs.ATG"
+#line 2193 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void MultiplicativeExpr(
-#line 2198 "cs.ATG"
+#line 2197 "cs.ATG"
ref Expression outExpr) {
-#line 2200 "cs.ATG"
+#line 2199 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
@@ -5172,57 +5171,57 @@ ref Expression outExpr) {
if (la.kind == 6) {
lexer.NextToken();
-#line 2206 "cs.ATG"
+#line 2205 "cs.ATG"
op = BinaryOperatorType.Multiply;
} else if (la.kind == 7) {
lexer.NextToken();
-#line 2207 "cs.ATG"
+#line 2206 "cs.ATG"
op = BinaryOperatorType.Divide;
} else {
lexer.NextToken();
-#line 2208 "cs.ATG"
+#line 2207 "cs.ATG"
op = BinaryOperatorType.Modulus;
}
UnaryExpr(
-#line 2210 "cs.ATG"
+#line 2209 "cs.ATG"
out expr);
-#line 2210 "cs.ATG"
+#line 2209 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void TypeParameterConstraintsClauseBase(
-#line 2292 "cs.ATG"
+#line 2291 "cs.ATG"
out TypeReference type) {
-#line 2293 "cs.ATG"
+#line 2292 "cs.ATG"
TypeReference t; type = null;
if (la.kind == 107) {
lexer.NextToken();
-#line 2295 "cs.ATG"
+#line 2294 "cs.ATG"
type = new TypeReference("struct");
} else if (la.kind == 57) {
lexer.NextToken();
-#line 2296 "cs.ATG"
+#line 2295 "cs.ATG"
type = new TypeReference("struct");
} else if (la.kind == 87) {
lexer.NextToken();
Expect(19);
Expect(20);
-#line 2297 "cs.ATG"
+#line 2296 "cs.ATG"
type = new TypeReference("struct");
} else if (StartOf(8)) {
Type(
-#line 2298 "cs.ATG"
+#line 2297 "cs.ATG"
out t);
-#line 2298 "cs.ATG"
+#line 2297 "cs.ATG"
type = t;
} else SynErr(184);
}
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
index b8bcfc08ba..6a0cc8536c 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
@@ -350,7 +350,7 @@ out u);
void GlobalAttributeSection() {
-#line 1894 "VBNET.ATG"
+#line 2001 "VBNET.ATG"
Point startPos = t.Location;
Expect(26);
if (la.kind == 48) {
@@ -359,20 +359,20 @@ out u);
lexer.NextToken();
} else SynErr(204);
-#line 1896 "VBNET.ATG"
+#line 2003 "VBNET.ATG"
string attributeTarget = t.val.ToLower();
List attributes = new List();
ASTAttribute attribute;
Expect(13);
Attribute(
-#line 1900 "VBNET.ATG"
+#line 2007 "VBNET.ATG"
out attribute);
-#line 1900 "VBNET.ATG"
+#line 2007 "VBNET.ATG"
attributes.Add(attribute);
while (
-#line 1901 "VBNET.ATG"
+#line 2008 "VBNET.ATG"
NotFinalComma()) {
if (la.kind == 12) {
lexer.NextToken();
@@ -384,10 +384,10 @@ NotFinalComma()) {
Expect(13);
}
Attribute(
-#line 1901 "VBNET.ATG"
+#line 2008 "VBNET.ATG"
out attribute);
-#line 1901 "VBNET.ATG"
+#line 2008 "VBNET.ATG"
attributes.Add(attribute);
}
if (la.kind == 12) {
@@ -396,7 +396,7 @@ out attribute);
Expect(25);
EndOfStmt();
-#line 1906 "VBNET.ATG"
+#line 2013 "VBNET.ATG"
AttributeSection section = new AttributeSection(attributeTarget, attributes);
section.StartLocation = startPos;
section.EndLocation = t.EndLocation;
@@ -408,20 +408,21 @@ out attribute);
#line 516 "VBNET.ATG"
Modifiers m = new Modifiers();
- AttributeSection section;List attributes = new List();
+ AttributeSection section;
+ List attributes = new List();
string qualident;
if (la.kind == 125) {
lexer.NextToken();
-#line 522 "VBNET.ATG"
+#line 523 "VBNET.ATG"
Point startPos = t.Location;
Qualident(
-#line 524 "VBNET.ATG"
+#line 525 "VBNET.ATG"
out qualident);
-#line 526 "VBNET.ATG"
+#line 527 "VBNET.ATG"
INode node = new NamespaceDeclaration(qualident);
node.StartLocation = startPos;
compilationUnit.AddChild(node);
@@ -430,26 +431,26 @@ out qualident);
Expect(1);
NamespaceBody();
-#line 534 "VBNET.ATG"
+#line 535 "VBNET.ATG"
node.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else if (StartOf(2)) {
while (la.kind == 26) {
AttributeSection(
-#line 538 "VBNET.ATG"
+#line 539 "VBNET.ATG"
out section);
-#line 538 "VBNET.ATG"
+#line 539 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(3)) {
TypeModifier(
-#line 539 "VBNET.ATG"
+#line 540 "VBNET.ATG"
m);
}
NonModuleDeclaration(
-#line 539 "VBNET.ATG"
+#line 540 "VBNET.ATG"
m, attributes);
} else SynErr(206);
}
@@ -527,30 +528,30 @@ out qualident);
}
void Qualident(
-#line 2618 "VBNET.ATG"
+#line 2725 "VBNET.ATG"
out string qualident) {
-#line 2620 "VBNET.ATG"
+#line 2727 "VBNET.ATG"
string name;
qualidentBuilder.Length = 0;
Identifier();
-#line 2624 "VBNET.ATG"
+#line 2731 "VBNET.ATG"
qualidentBuilder.Append(t.val);
while (
-#line 2625 "VBNET.ATG"
+#line 2732 "VBNET.ATG"
DotAndIdentOrKw()) {
Expect(10);
IdentifierOrKeyword(
-#line 2625 "VBNET.ATG"
+#line 2732 "VBNET.ATG"
out name);
-#line 2625 "VBNET.ATG"
+#line 2732 "VBNET.ATG"
qualidentBuilder.Append('.'); qualidentBuilder.Append(name);
}
-#line 2627 "VBNET.ATG"
+#line 2734 "VBNET.ATG"
qualident = qualidentBuilder.ToString();
}
@@ -564,35 +565,35 @@ out name);
}
void AttributeSection(
-#line 1964 "VBNET.ATG"
+#line 2071 "VBNET.ATG"
out AttributeSection section) {
-#line 1966 "VBNET.ATG"
+#line 2073 "VBNET.ATG"
string attributeTarget = "";List attributes = new List();
ASTAttribute attribute;
Expect(26);
-#line 1970 "VBNET.ATG"
+#line 2077 "VBNET.ATG"
Point startPos = t.Location;
if (
-#line 1971 "VBNET.ATG"
+#line 2078 "VBNET.ATG"
IsLocalAttrTarget()) {
if (la.kind == 92) {
lexer.NextToken();
-#line 1972 "VBNET.ATG"
+#line 2079 "VBNET.ATG"
attributeTarget = "event";
} else if (la.kind == 154) {
lexer.NextToken();
-#line 1973 "VBNET.ATG"
+#line 2080 "VBNET.ATG"
attributeTarget = "return";
} else {
Identifier();
-#line 1976 "VBNET.ATG"
+#line 2083 "VBNET.ATG"
string val = t.val.ToLower();
if (val != "field" || val != "method" ||
val != "module" || val != "param" ||
@@ -605,20 +606,20 @@ IsLocalAttrTarget()) {
Expect(13);
}
Attribute(
-#line 1986 "VBNET.ATG"
+#line 2093 "VBNET.ATG"
out attribute);
-#line 1986 "VBNET.ATG"
+#line 2093 "VBNET.ATG"
attributes.Add(attribute);
while (
-#line 1987 "VBNET.ATG"
+#line 2094 "VBNET.ATG"
NotFinalComma()) {
Expect(12);
Attribute(
-#line 1987 "VBNET.ATG"
+#line 2094 "VBNET.ATG"
out attribute);
-#line 1987 "VBNET.ATG"
+#line 2094 "VBNET.ATG"
attributes.Add(attribute);
}
if (la.kind == 12) {
@@ -626,7 +627,7 @@ out attribute);
}
Expect(25);
-#line 1991 "VBNET.ATG"
+#line 2098 "VBNET.ATG"
section = new AttributeSection(attributeTarget, attributes);
section.StartLocation = startPos;
section.EndLocation = t.EndLocation;
@@ -634,62 +635,62 @@ out attribute);
}
void TypeModifier(
-#line 2827 "VBNET.ATG"
+#line 2934 "VBNET.ATG"
Modifiers m) {
switch (la.kind) {
case 148: {
lexer.NextToken();
-#line 2828 "VBNET.ATG"
+#line 2935 "VBNET.ATG"
m.Add(Modifier.Public);
break;
}
case 147: {
lexer.NextToken();
-#line 2829 "VBNET.ATG"
+#line 2936 "VBNET.ATG"
m.Add(Modifier.Protected);
break;
}
case 98: {
lexer.NextToken();
-#line 2830 "VBNET.ATG"
+#line 2937 "VBNET.ATG"
m.Add(Modifier.Internal);
break;
}
case 145: {
lexer.NextToken();
-#line 2831 "VBNET.ATG"
+#line 2938 "VBNET.ATG"
m.Add(Modifier.Private);
break;
}
case 158: {
lexer.NextToken();
-#line 2832 "VBNET.ATG"
+#line 2939 "VBNET.ATG"
m.Add(Modifier.Static);
break;
}
case 157: {
lexer.NextToken();
-#line 2833 "VBNET.ATG"
+#line 2940 "VBNET.ATG"
m.Add(Modifier.New);
break;
}
case 121: {
lexer.NextToken();
-#line 2834 "VBNET.ATG"
+#line 2941 "VBNET.ATG"
m.Add(Modifier.Abstract);
break;
}
case 130: {
lexer.NextToken();
-#line 2835 "VBNET.ATG"
+#line 2942 "VBNET.ATG"
m.Add(Modifier.Sealed);
break;
}
@@ -698,10 +699,10 @@ Modifiers m) {
}
void NonModuleDeclaration(
-#line 590 "VBNET.ATG"
+#line 591 "VBNET.ATG"
Modifiers m, List attributes) {
-#line 592 "VBNET.ATG"
+#line 593 "VBNET.ATG"
string name = null;
TypeReference typeRef = null;
List baseInterfaces = null;
@@ -709,17 +710,17 @@ Modifiers m, List attributes) {
switch (la.kind) {
case 66: case 199: {
-#line 596 "VBNET.ATG"
+#line 597 "VBNET.ATG"
m.Check(Modifier.Classes);
if (la.kind == 199) {
lexer.NextToken();
-#line 598 "VBNET.ATG"
+#line 599 "VBNET.ATG"
m.Add(Modifier.Partial);
}
Expect(66);
-#line 600 "VBNET.ATG"
+#line 601 "VBNET.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location;
compilationUnit.AddChild(newType);
@@ -729,33 +730,33 @@ Modifiers m, List attributes) {
Identifier();
-#line 607 "VBNET.ATG"
+#line 608 "VBNET.ATG"
newType.Name = t.val;
TypeParameterList(
-#line 608 "VBNET.ATG"
+#line 609 "VBNET.ATG"
newType.Templates);
EndOfStmt();
if (la.kind == 109) {
ClassBaseType(
-#line 610 "VBNET.ATG"
+#line 611 "VBNET.ATG"
out typeRef);
-#line 610 "VBNET.ATG"
+#line 611 "VBNET.ATG"
newType.BaseTypes.Add(typeRef);
}
while (la.kind == 106) {
TypeImplementsClause(
-#line 611 "VBNET.ATG"
+#line 612 "VBNET.ATG"
out baseInterfaces);
-#line 611 "VBNET.ATG"
+#line 612 "VBNET.ATG"
newType.BaseTypes.AddRange(baseInterfaces);
}
ClassBody(
-#line 612 "VBNET.ATG"
+#line 613 "VBNET.ATG"
newType);
-#line 614 "VBNET.ATG"
+#line 615 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
@@ -763,7 +764,7 @@ newType);
case 120: {
lexer.NextToken();
-#line 618 "VBNET.ATG"
+#line 619 "VBNET.ATG"
m.Check(Modifier.VBModules);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType);
@@ -773,14 +774,14 @@ newType);
Identifier();
-#line 625 "VBNET.ATG"
+#line 626 "VBNET.ATG"
newType.Name = t.val;
Expect(1);
ModuleBody(
-#line 627 "VBNET.ATG"
+#line 628 "VBNET.ATG"
newType);
-#line 629 "VBNET.ATG"
+#line 630 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
@@ -788,35 +789,36 @@ newType);
case 166: {
lexer.NextToken();
-#line 633 "VBNET.ATG"
+#line 634 "VBNET.ATG"
m.Check(Modifier.VBStructures);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location;
+ System.Console.WriteLine("XXX " + t.Location.ToString());
newType.Type = Types.Struct;
Identifier();
-#line 640 "VBNET.ATG"
+#line 642 "VBNET.ATG"
newType.Name = t.val;
TypeParameterList(
-#line 641 "VBNET.ATG"
+#line 643 "VBNET.ATG"
newType.Templates);
Expect(1);
while (la.kind == 106) {
TypeImplementsClause(
-#line 642 "VBNET.ATG"
+#line 644 "VBNET.ATG"
out baseInterfaces);
-#line 642 "VBNET.ATG"
+#line 644 "VBNET.ATG"
newType.BaseTypes.AddRange(baseInterfaces);
}
StructureBody(
-#line 643 "VBNET.ATG"
+#line 645 "VBNET.ATG"
newType);
-#line 645 "VBNET.ATG"
+#line 647 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
@@ -824,7 +826,7 @@ newType);
case 89: {
lexer.NextToken();
-#line 650 "VBNET.ATG"
+#line 652 "VBNET.ATG"
m.Check(Modifier.VBEnums);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location;
@@ -836,23 +838,23 @@ newType);
Identifier();
-#line 659 "VBNET.ATG"
+#line 661 "VBNET.ATG"
newType.Name = t.val;
if (la.kind == 47) {
lexer.NextToken();
PrimitiveTypeName(
-#line 660 "VBNET.ATG"
+#line 662 "VBNET.ATG"
out name);
-#line 660 "VBNET.ATG"
+#line 662 "VBNET.ATG"
newType.BaseTypes.Add(new TypeReference(name));
}
Expect(1);
EnumBody(
-#line 662 "VBNET.ATG"
+#line 664 "VBNET.ATG"
newType);
-#line 664 "VBNET.ATG"
+#line 666 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
@@ -860,7 +862,7 @@ newType);
case 111: {
lexer.NextToken();
-#line 669 "VBNET.ATG"
+#line 671 "VBNET.ATG"
m.Check(Modifier.VBInterfacs);
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location;
@@ -870,25 +872,25 @@ newType);
Identifier();
-#line 676 "VBNET.ATG"
+#line 678 "VBNET.ATG"
newType.Name = t.val;
TypeParameterList(
-#line 677 "VBNET.ATG"
+#line 679 "VBNET.ATG"
newType.Templates);
EndOfStmt();
while (la.kind == 109) {
InterfaceBase(
-#line 678 "VBNET.ATG"
+#line 680 "VBNET.ATG"
out baseInterfaces);
-#line 678 "VBNET.ATG"
+#line 680 "VBNET.ATG"
newType.BaseTypes.AddRange(baseInterfaces);
}
InterfaceBody(
-#line 679 "VBNET.ATG"
+#line 681 "VBNET.ATG"
newType);
-#line 681 "VBNET.ATG"
+#line 683 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
@@ -896,7 +898,7 @@ newType);
case 79: {
lexer.NextToken();
-#line 686 "VBNET.ATG"
+#line 688 "VBNET.ATG"
m.Check(Modifier.VBDelegates);
DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
delegateDeclr.ReturnType = new TypeReference("", "System.Void");
@@ -907,63 +909,63 @@ newType);
lexer.NextToken();
Identifier();
-#line 693 "VBNET.ATG"
+#line 695 "VBNET.ATG"
delegateDeclr.Name = t.val;
TypeParameterList(
-#line 694 "VBNET.ATG"
+#line 696 "VBNET.ATG"
delegateDeclr.Templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 695 "VBNET.ATG"
+#line 697 "VBNET.ATG"
p);
}
Expect(24);
-#line 695 "VBNET.ATG"
+#line 697 "VBNET.ATG"
delegateDeclr.Parameters = p;
}
} else if (la.kind == 99) {
lexer.NextToken();
Identifier();
-#line 697 "VBNET.ATG"
+#line 699 "VBNET.ATG"
delegateDeclr.Name = t.val;
TypeParameterList(
-#line 698 "VBNET.ATG"
+#line 700 "VBNET.ATG"
delegateDeclr.Templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 699 "VBNET.ATG"
+#line 701 "VBNET.ATG"
p);
}
Expect(24);
-#line 699 "VBNET.ATG"
+#line 701 "VBNET.ATG"
delegateDeclr.Parameters = p;
}
if (la.kind == 47) {
lexer.NextToken();
-#line 700 "VBNET.ATG"
+#line 702 "VBNET.ATG"
TypeReference type;
TypeName(
-#line 700 "VBNET.ATG"
+#line 702 "VBNET.ATG"
out type);
-#line 700 "VBNET.ATG"
+#line 702 "VBNET.ATG"
delegateDeclr.ReturnType = type;
}
} else SynErr(211);
-#line 702 "VBNET.ATG"
+#line 704 "VBNET.ATG"
delegateDeclr.EndLocation = t.EndLocation;
Expect(1);
-#line 705 "VBNET.ATG"
+#line 707 "VBNET.ATG"
compilationUnit.AddChild(delegateDeclr);
break;
@@ -973,31 +975,31 @@ out type);
}
void TypeParameterList(
-#line 543 "VBNET.ATG"
+#line 544 "VBNET.ATG"
List templates) {
-#line 545 "VBNET.ATG"
+#line 546 "VBNET.ATG"
TemplateDefinition template;
if (
-#line 548 "VBNET.ATG"
+#line 549 "VBNET.ATG"
la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
lexer.NextToken();
Expect(196);
TypeParameter(
-#line 549 "VBNET.ATG"
+#line 550 "VBNET.ATG"
out template);
-#line 551 "VBNET.ATG"
+#line 552 "VBNET.ATG"
if (template != null) templates.Add(template);
while (la.kind == 12) {
lexer.NextToken();
TypeParameter(
-#line 554 "VBNET.ATG"
+#line 555 "VBNET.ATG"
out template);
-#line 556 "VBNET.ATG"
+#line 557 "VBNET.ATG"
if (template != null) templates.Add(template);
}
@@ -1006,69 +1008,69 @@ out template);
}
void TypeParameter(
-#line 564 "VBNET.ATG"
+#line 565 "VBNET.ATG"
out TemplateDefinition template) {
Identifier();
-#line 566 "VBNET.ATG"
+#line 567 "VBNET.ATG"
template = new TemplateDefinition(t.val, null);
if (la.kind == 47) {
TypeParameterConstraints(
-#line 567 "VBNET.ATG"
+#line 568 "VBNET.ATG"
template);
}
}
void TypeParameterConstraints(
-#line 571 "VBNET.ATG"
+#line 572 "VBNET.ATG"
TemplateDefinition template) {
-#line 573 "VBNET.ATG"
+#line 574 "VBNET.ATG"
TypeReference constraint;
Expect(47);
if (la.kind == 21) {
lexer.NextToken();
TypeName(
-#line 579 "VBNET.ATG"
+#line 580 "VBNET.ATG"
out constraint);
-#line 579 "VBNET.ATG"
+#line 580 "VBNET.ATG"
if (constraint != null) { template.Bases.Add(constraint); }
while (la.kind == 12) {
lexer.NextToken();
TypeName(
-#line 582 "VBNET.ATG"
+#line 583 "VBNET.ATG"
out constraint);
-#line 582 "VBNET.ATG"
+#line 583 "VBNET.ATG"
if (constraint != null) { template.Bases.Add(constraint); }
}
Expect(22);
} else if (StartOf(5)) {
TypeName(
-#line 585 "VBNET.ATG"
+#line 586 "VBNET.ATG"
out constraint);
-#line 585 "VBNET.ATG"
+#line 586 "VBNET.ATG"
if (constraint != null) { template.Bases.Add(constraint); }
} else SynErr(213);
}
void TypeName(
-#line 1814 "VBNET.ATG"
+#line 1921 "VBNET.ATG"
out TypeReference typeref) {
-#line 1815 "VBNET.ATG"
+#line 1922 "VBNET.ATG"
ArrayList rank = null; typeref = null;
NonArrayTypeName(
-#line 1817 "VBNET.ATG"
+#line 1924 "VBNET.ATG"
out typeref);
ArrayTypeModifiers(
-#line 1818 "VBNET.ATG"
+#line 1925 "VBNET.ATG"
out rank);
-#line 1820 "VBNET.ATG"
+#line 1927 "VBNET.ATG"
if (rank != null && typeref != null) {
typeref.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
@@ -1076,267 +1078,267 @@ out rank);
}
void ClassBaseType(
-#line 882 "VBNET.ATG"
+#line 884 "VBNET.ATG"
out TypeReference typeRef) {
-#line 884 "VBNET.ATG"
+#line 886 "VBNET.ATG"
typeRef = null;
Expect(109);
TypeName(
-#line 887 "VBNET.ATG"
+#line 889 "VBNET.ATG"
out typeRef);
EndOfStmt();
}
void TypeImplementsClause(
-#line 1467 "VBNET.ATG"
+#line 1574 "VBNET.ATG"
out List baseInterfaces) {
-#line 1469 "VBNET.ATG"
+#line 1576 "VBNET.ATG"
baseInterfaces = new List();
TypeReference type = null;
Expect(106);
TypeName(
-#line 1472 "VBNET.ATG"
+#line 1579 "VBNET.ATG"
out type);
-#line 1474 "VBNET.ATG"
+#line 1581 "VBNET.ATG"
baseInterfaces.Add(type);
while (la.kind == 12) {
lexer.NextToken();
TypeName(
-#line 1477 "VBNET.ATG"
+#line 1584 "VBNET.ATG"
out type);
-#line 1478 "VBNET.ATG"
+#line 1585 "VBNET.ATG"
baseInterfaces.Add(type);
}
EndOfStmt();
}
void ClassBody(
-#line 715 "VBNET.ATG"
+#line 717 "VBNET.ATG"
TypeDeclaration newType) {
-#line 716 "VBNET.ATG"
+#line 718 "VBNET.ATG"
AttributeSection section;
while (StartOf(6)) {
-#line 718 "VBNET.ATG"
+#line 720 "VBNET.ATG"
List attributes = new List();
Modifiers m = new Modifiers();
while (la.kind == 26) {
AttributeSection(
-#line 721 "VBNET.ATG"
+#line 723 "VBNET.ATG"
out section);
-#line 721 "VBNET.ATG"
+#line 723 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(7)) {
MemberModifier(
-#line 722 "VBNET.ATG"
+#line 724 "VBNET.ATG"
m);
}
ClassMemberDecl(
-#line 723 "VBNET.ATG"
+#line 725 "VBNET.ATG"
m, attributes);
}
Expect(87);
Expect(66);
-#line 725 "VBNET.ATG"
+#line 727 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void ModuleBody(
-#line 744 "VBNET.ATG"
+#line 746 "VBNET.ATG"
TypeDeclaration newType) {
-#line 745 "VBNET.ATG"
+#line 747 "VBNET.ATG"
AttributeSection section;
while (StartOf(6)) {
-#line 747 "VBNET.ATG"
+#line 749 "VBNET.ATG"
List attributes = new List();
Modifiers m = new Modifiers();
while (la.kind == 26) {
AttributeSection(
-#line 750 "VBNET.ATG"
+#line 752 "VBNET.ATG"
out section);
-#line 750 "VBNET.ATG"
+#line 752 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(7)) {
MemberModifier(
-#line 751 "VBNET.ATG"
+#line 753 "VBNET.ATG"
m);
}
ClassMemberDecl(
-#line 752 "VBNET.ATG"
+#line 754 "VBNET.ATG"
m, attributes);
}
Expect(87);
Expect(120);
-#line 754 "VBNET.ATG"
+#line 756 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void StructureBody(
-#line 729 "VBNET.ATG"
+#line 731 "VBNET.ATG"
TypeDeclaration newType) {
-#line 730 "VBNET.ATG"
+#line 732 "VBNET.ATG"
AttributeSection section;
while (StartOf(6)) {
-#line 732 "VBNET.ATG"
+#line 734 "VBNET.ATG"
List attributes = new List();
Modifiers m = new Modifiers();
while (la.kind == 26) {
AttributeSection(
-#line 735 "VBNET.ATG"
+#line 737 "VBNET.ATG"
out section);
-#line 735 "VBNET.ATG"
+#line 737 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(7)) {
MemberModifier(
-#line 736 "VBNET.ATG"
+#line 738 "VBNET.ATG"
m);
}
StructureMemberDecl(
-#line 737 "VBNET.ATG"
+#line 739 "VBNET.ATG"
m, attributes);
}
Expect(87);
Expect(166);
-#line 739 "VBNET.ATG"
+#line 741 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void PrimitiveTypeName(
-#line 2800 "VBNET.ATG"
+#line 2907 "VBNET.ATG"
out string type) {
-#line 2801 "VBNET.ATG"
+#line 2908 "VBNET.ATG"
type = String.Empty;
switch (la.kind) {
case 51: {
lexer.NextToken();
-#line 2802 "VBNET.ATG"
+#line 2909 "VBNET.ATG"
type = "Boolean";
break;
}
case 75: {
lexer.NextToken();
-#line 2803 "VBNET.ATG"
+#line 2910 "VBNET.ATG"
type = "Date";
break;
}
case 64: {
lexer.NextToken();
-#line 2804 "VBNET.ATG"
+#line 2911 "VBNET.ATG"
type = "Char";
break;
}
case 165: {
lexer.NextToken();
-#line 2805 "VBNET.ATG"
+#line 2912 "VBNET.ATG"
type = "String";
break;
}
case 76: {
lexer.NextToken();
-#line 2806 "VBNET.ATG"
+#line 2913 "VBNET.ATG"
type = "Decimal";
break;
}
case 53: {
lexer.NextToken();
-#line 2807 "VBNET.ATG"
+#line 2914 "VBNET.ATG"
type = "Byte";
break;
}
case 159: {
lexer.NextToken();
-#line 2808 "VBNET.ATG"
+#line 2915 "VBNET.ATG"
type = "Short";
break;
}
case 110: {
lexer.NextToken();
-#line 2809 "VBNET.ATG"
+#line 2916 "VBNET.ATG"
type = "Integer";
break;
}
case 116: {
lexer.NextToken();
-#line 2810 "VBNET.ATG"
+#line 2917 "VBNET.ATG"
type = "Long";
break;
}
case 160: {
lexer.NextToken();
-#line 2811 "VBNET.ATG"
+#line 2918 "VBNET.ATG"
type = "Single";
break;
}
case 83: {
lexer.NextToken();
-#line 2812 "VBNET.ATG"
+#line 2919 "VBNET.ATG"
type = "Double";
break;
}
case 191: {
lexer.NextToken();
-#line 2813 "VBNET.ATG"
+#line 2920 "VBNET.ATG"
type = "UInteger";
break;
}
case 192: {
lexer.NextToken();
-#line 2814 "VBNET.ATG"
+#line 2921 "VBNET.ATG"
type = "ULong";
break;
}
case 193: {
lexer.NextToken();
-#line 2815 "VBNET.ATG"
+#line 2922 "VBNET.ATG"
type = "UShort";
break;
}
case 190: {
lexer.NextToken();
-#line 2816 "VBNET.ATG"
+#line 2923 "VBNET.ATG"
type = "SByte";
break;
}
@@ -1345,56 +1347,56 @@ out string type) {
}
void EnumBody(
-#line 758 "VBNET.ATG"
+#line 760 "VBNET.ATG"
TypeDeclaration newType) {
-#line 759 "VBNET.ATG"
+#line 761 "VBNET.ATG"
FieldDeclaration f;
while (StartOf(8)) {
EnumMemberDecl(
-#line 761 "VBNET.ATG"
+#line 763 "VBNET.ATG"
out f);
-#line 761 "VBNET.ATG"
+#line 763 "VBNET.ATG"
compilationUnit.AddChild(f);
}
Expect(87);
Expect(89);
-#line 763 "VBNET.ATG"
+#line 765 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void InterfaceBase(
-#line 1452 "VBNET.ATG"
+#line 1559 "VBNET.ATG"
out List bases) {
-#line 1454 "VBNET.ATG"
+#line 1561 "VBNET.ATG"
TypeReference type;
bases = new List();
Expect(109);
TypeName(
-#line 1458 "VBNET.ATG"
+#line 1565 "VBNET.ATG"
out type);
-#line 1458 "VBNET.ATG"
+#line 1565 "VBNET.ATG"
bases.Add(type);
while (la.kind == 12) {
lexer.NextToken();
TypeName(
-#line 1461 "VBNET.ATG"
+#line 1568 "VBNET.ATG"
out type);
-#line 1461 "VBNET.ATG"
+#line 1568 "VBNET.ATG"
bases.Add(type);
}
Expect(1);
}
void InterfaceBody(
-#line 767 "VBNET.ATG"
+#line 769 "VBNET.ATG"
TypeDeclaration newType) {
while (StartOf(9)) {
InterfaceMemberDecl();
@@ -1402,33 +1404,33 @@ TypeDeclaration newType) {
Expect(87);
Expect(111);
-#line 769 "VBNET.ATG"
+#line 771 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void FormalParameterList(
-#line 1998 "VBNET.ATG"
+#line 2105 "VBNET.ATG"
List parameter) {
-#line 2000 "VBNET.ATG"
+#line 2107 "VBNET.ATG"
ParameterDeclarationExpression p;
AttributeSection section;
List attributes = new List();
while (la.kind == 26) {
AttributeSection(
-#line 2004 "VBNET.ATG"
+#line 2111 "VBNET.ATG"
out section);
-#line 2004 "VBNET.ATG"
+#line 2111 "VBNET.ATG"
attributes.Add(section);
}
FormalParameter(
-#line 2006 "VBNET.ATG"
+#line 2113 "VBNET.ATG"
out p);
-#line 2008 "VBNET.ATG"
+#line 2115 "VBNET.ATG"
bool paramsFound = false;
p.Attributes = attributes;
parameter.Add(p);
@@ -1436,172 +1438,186 @@ out p);
while (la.kind == 12) {
lexer.NextToken();
-#line 2013 "VBNET.ATG"
+#line 2120 "VBNET.ATG"
if (paramsFound) Error("params array must be at end of parameter list");
while (la.kind == 26) {
AttributeSection(
-#line 2014 "VBNET.ATG"
+#line 2121 "VBNET.ATG"
out section);
-#line 2014 "VBNET.ATG"
+#line 2121 "VBNET.ATG"
attributes.Add(section);
}
FormalParameter(
-#line 2016 "VBNET.ATG"
+#line 2123 "VBNET.ATG"
out p);
-#line 2016 "VBNET.ATG"
+#line 2123 "VBNET.ATG"
p.Attributes = attributes; parameter.Add(p);
}
}
void MemberModifier(
-#line 2838 "VBNET.ATG"
+#line 2945 "VBNET.ATG"
Modifiers m) {
switch (la.kind) {
case 121: {
lexer.NextToken();
-#line 2839 "VBNET.ATG"
+#line 2946 "VBNET.ATG"
m.Add(Modifier.Abstract);
break;
}
case 78: {
lexer.NextToken();
-#line 2840 "VBNET.ATG"
+#line 2947 "VBNET.ATG"
m.Add(Modifier.Default);
break;
}
case 98: {
lexer.NextToken();
-#line 2841 "VBNET.ATG"
+#line 2948 "VBNET.ATG"
m.Add(Modifier.Internal);
break;
}
case 157: {
lexer.NextToken();
-#line 2842 "VBNET.ATG"
+#line 2949 "VBNET.ATG"
m.Add(Modifier.New);
break;
}
case 142: {
lexer.NextToken();
-#line 2843 "VBNET.ATG"
+#line 2950 "VBNET.ATG"
m.Add(Modifier.Override);
break;
}
case 122: {
lexer.NextToken();
-#line 2844 "VBNET.ATG"
+#line 2951 "VBNET.ATG"
m.Add(Modifier.Abstract);
break;
}
case 145: {
lexer.NextToken();
-#line 2845 "VBNET.ATG"
+#line 2952 "VBNET.ATG"
m.Add(Modifier.Private);
break;
}
case 147: {
lexer.NextToken();
-#line 2846 "VBNET.ATG"
+#line 2953 "VBNET.ATG"
m.Add(Modifier.Protected);
break;
}
case 148: {
lexer.NextToken();
-#line 2847 "VBNET.ATG"
+#line 2954 "VBNET.ATG"
m.Add(Modifier.Public);
break;
}
case 130: {
lexer.NextToken();
-#line 2848 "VBNET.ATG"
+#line 2955 "VBNET.ATG"
m.Add(Modifier.Sealed);
break;
}
case 131: {
lexer.NextToken();
-#line 2849 "VBNET.ATG"
+#line 2956 "VBNET.ATG"
m.Add(Modifier.Sealed);
break;
}
case 158: {
lexer.NextToken();
-#line 2850 "VBNET.ATG"
+#line 2957 "VBNET.ATG"
m.Add(Modifier.Static);
break;
}
case 140: {
lexer.NextToken();
-#line 2851 "VBNET.ATG"
+#line 2958 "VBNET.ATG"
m.Add(Modifier.Virtual);
break;
}
case 139: {
lexer.NextToken();
-#line 2852 "VBNET.ATG"
+#line 2959 "VBNET.ATG"
m.Add(Modifier.Overloads);
break;
}
case 150: {
lexer.NextToken();
-#line 2853 "VBNET.ATG"
+#line 2960 "VBNET.ATG"
break;
}
case 184: {
lexer.NextToken();
-#line 2854 "VBNET.ATG"
+#line 2961 "VBNET.ATG"
break;
}
case 183: {
lexer.NextToken();
-#line 2855 "VBNET.ATG"
+#line 2962 "VBNET.ATG"
m.Add(Modifier.WithEvents);
break;
}
case 80: {
lexer.NextToken();
-#line 2856 "VBNET.ATG"
+#line 2963 "VBNET.ATG"
m.Add(Modifier.Dim);
break;
}
+ case 198: {
+ lexer.NextToken();
+
+#line 2964 "VBNET.ATG"
+ m.Add(Modifier.Widening);
+ break;
+ }
+ case 197: {
+ lexer.NextToken();
+
+#line 2965 "VBNET.ATG"
+ m.Add(Modifier.Narrowing);
+ break;
+ }
default: SynErr(215); break;
}
}
void ClassMemberDecl(
-#line 878 "VBNET.ATG"
+#line 880 "VBNET.ATG"
Modifiers m, List attributes) {
StructureMemberDecl(
-#line 879 "VBNET.ATG"
+#line 881 "VBNET.ATG"
m, attributes);
}
void StructureMemberDecl(
-#line 892 "VBNET.ATG"
+#line 894 "VBNET.ATG"
Modifiers m, List attributes) {
-#line 894 "VBNET.ATG"
+#line 896 "VBNET.ATG"
TypeReference type = null;
List p = new List();
Statement stmt = null;
@@ -1611,36 +1627,36 @@ Modifiers m, List attributes) {
switch (la.kind) {
case 66: case 79: case 89: case 111: case 120: case 166: case 199: {
NonModuleDeclaration(
-#line 900 "VBNET.ATG"
+#line 902 "VBNET.ATG"
m, attributes);
break;
}
case 167: {
lexer.NextToken();
-#line 904 "VBNET.ATG"
+#line 906 "VBNET.ATG"
Point startPos = t.Location;
if (StartOf(10)) {
-#line 908 "VBNET.ATG"
+#line 910 "VBNET.ATG"
string name = String.Empty;
MethodDeclaration methodDeclaration; ArrayList handlesClause = null; ArrayList implementsClause = null;
Identifier();
-#line 913 "VBNET.ATG"
+#line 915 "VBNET.ATG"
name = t.val;
m.Check(Modifier.VBMethods);
TypeParameterList(
-#line 916 "VBNET.ATG"
+#line 918 "VBNET.ATG"
templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 917 "VBNET.ATG"
+#line 919 "VBNET.ATG"
p);
}
Expect(24);
@@ -1648,23 +1664,23 @@ p);
if (la.kind == 104 || la.kind == 106) {
if (la.kind == 106) {
ImplementsClause(
-#line 920 "VBNET.ATG"
+#line 922 "VBNET.ATG"
out implementsClause);
} else {
HandlesClause(
-#line 922 "VBNET.ATG"
+#line 924 "VBNET.ATG"
out handlesClause);
}
}
-#line 925 "VBNET.ATG"
+#line 927 "VBNET.ATG"
Point endLocation = t.EndLocation;
Expect(1);
if (
-#line 929 "VBNET.ATG"
+#line 931 "VBNET.ATG"
IsMustOverride(m)) {
-#line 931 "VBNET.ATG"
+#line 933 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = startPos;
methodDeclaration.EndLocation = endLocation;
@@ -1678,7 +1694,7 @@ IsMustOverride(m)) {
} else if (StartOf(11)) {
-#line 944 "VBNET.ATG"
+#line 946 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = startPos;
methodDeclaration.EndLocation = endLocation;
@@ -1692,17 +1708,17 @@ IsMustOverride(m)) {
compilationUnit.BlockStart(methodDeclaration);
Block(
-#line 956 "VBNET.ATG"
+#line 958 "VBNET.ATG"
out stmt);
-#line 958 "VBNET.ATG"
+#line 960 "VBNET.ATG"
compilationUnit.BlockEnd();
methodDeclaration.Body = (BlockStatement)stmt;
Expect(87);
Expect(167);
-#line 961 "VBNET.ATG"
+#line 963 "VBNET.ATG"
methodDeclaration.Body.EndLocation = t.EndLocation;
Expect(1);
} else SynErr(216);
@@ -1712,29 +1728,29 @@ out stmt);
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 964 "VBNET.ATG"
+#line 966 "VBNET.ATG"
p);
}
Expect(24);
}
-#line 965 "VBNET.ATG"
+#line 967 "VBNET.ATG"
m.Check(Modifier.Constructors);
-#line 966 "VBNET.ATG"
+#line 968 "VBNET.ATG"
Point constructorEndLocation = t.EndLocation;
Expect(1);
Block(
-#line 968 "VBNET.ATG"
+#line 970 "VBNET.ATG"
out stmt);
Expect(87);
Expect(167);
-#line 969 "VBNET.ATG"
+#line 971 "VBNET.ATG"
Point endLocation = t.EndLocation;
Expect(1);
-#line 971 "VBNET.ATG"
+#line 973 "VBNET.ATG"
ConstructorDeclaration cd = new ConstructorDeclaration("New", m.Modifier, p, attributes);
cd.StartLocation = startPos;
cd.EndLocation = constructorEndLocation;
@@ -1748,7 +1764,7 @@ out stmt);
case 99: {
lexer.NextToken();
-#line 983 "VBNET.ATG"
+#line 985 "VBNET.ATG"
m.Check(Modifier.VBMethods);
string name = String.Empty;
Point startPos = t.Location;
@@ -1757,16 +1773,16 @@ out stmt);
Identifier();
-#line 989 "VBNET.ATG"
+#line 991 "VBNET.ATG"
name = t.val;
TypeParameterList(
-#line 990 "VBNET.ATG"
+#line 992 "VBNET.ATG"
templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 991 "VBNET.ATG"
+#line 993 "VBNET.ATG"
p);
}
Expect(24);
@@ -1775,15 +1791,15 @@ p);
lexer.NextToken();
while (la.kind == 26) {
AttributeSection(
-#line 992 "VBNET.ATG"
+#line 994 "VBNET.ATG"
out returnTypeAttributeSection);
}
TypeName(
-#line 992 "VBNET.ATG"
+#line 994 "VBNET.ATG"
out type);
}
-#line 994 "VBNET.ATG"
+#line 996 "VBNET.ATG"
if(type == null) {
type = new TypeReference("System.Object");
}
@@ -1791,20 +1807,20 @@ out type);
if (la.kind == 104 || la.kind == 106) {
if (la.kind == 106) {
ImplementsClause(
-#line 1000 "VBNET.ATG"
+#line 1002 "VBNET.ATG"
out implementsClause);
} else {
HandlesClause(
-#line 1002 "VBNET.ATG"
+#line 1004 "VBNET.ATG"
out handlesClause);
}
}
Expect(1);
if (
-#line 1008 "VBNET.ATG"
+#line 1010 "VBNET.ATG"
IsMustOverride(m)) {
-#line 1010 "VBNET.ATG"
+#line 1012 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = startPos;
methodDeclaration.EndLocation = t.EndLocation;
@@ -1817,7 +1833,7 @@ IsMustOverride(m)) {
} else if (StartOf(11)) {
-#line 1022 "VBNET.ATG"
+#line 1024 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = startPos;
methodDeclaration.EndLocation = t.EndLocation;
@@ -1831,17 +1847,17 @@ IsMustOverride(m)) {
compilationUnit.BlockStart(methodDeclaration);
Block(
-#line 1034 "VBNET.ATG"
+#line 1036 "VBNET.ATG"
out stmt);
-#line 1036 "VBNET.ATG"
+#line 1038 "VBNET.ATG"
compilationUnit.BlockEnd();
methodDeclaration.Body = (BlockStatement)stmt;
Expect(87);
Expect(99);
-#line 1041 "VBNET.ATG"
+#line 1043 "VBNET.ATG"
methodDeclaration.Body.StartLocation = methodDeclaration.EndLocation;
methodDeclaration.Body.EndLocation = t.EndLocation;
@@ -1852,7 +1868,7 @@ out stmt);
case 77: {
lexer.NextToken();
-#line 1050 "VBNET.ATG"
+#line 1052 "VBNET.ATG"
m.Check(Modifier.VBExternalMethods);
Point startPos = t.Location;
CharsetModifier charsetModifer = CharsetModifier.None;
@@ -1862,39 +1878,39 @@ out stmt);
if (StartOf(12)) {
Charset(
-#line 1057 "VBNET.ATG"
+#line 1059 "VBNET.ATG"
out charsetModifer);
}
if (la.kind == 167) {
lexer.NextToken();
Identifier();
-#line 1060 "VBNET.ATG"
+#line 1062 "VBNET.ATG"
name = t.val;
Expect(114);
Expect(3);
-#line 1061 "VBNET.ATG"
+#line 1063 "VBNET.ATG"
library = t.val.ToString();
if (la.kind == 43) {
lexer.NextToken();
Expect(3);
-#line 1062 "VBNET.ATG"
+#line 1064 "VBNET.ATG"
alias = t.val.ToString();
}
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1063 "VBNET.ATG"
+#line 1065 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
-#line 1066 "VBNET.ATG"
+#line 1068 "VBNET.ATG"
DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, null, p, attributes, library, alias, charsetModifer);
declareDeclaration.StartLocation = startPos;
declareDeclaration.EndLocation = t.EndLocation;
@@ -1904,25 +1920,25 @@ p);
lexer.NextToken();
Identifier();
-#line 1073 "VBNET.ATG"
+#line 1075 "VBNET.ATG"
name = t.val;
Expect(114);
Expect(3);
-#line 1074 "VBNET.ATG"
+#line 1076 "VBNET.ATG"
library = t.val;
if (la.kind == 43) {
lexer.NextToken();
Expect(3);
-#line 1075 "VBNET.ATG"
+#line 1077 "VBNET.ATG"
alias = t.val;
}
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1076 "VBNET.ATG"
+#line 1078 "VBNET.ATG"
p);
}
Expect(24);
@@ -1930,12 +1946,12 @@ p);
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 1077 "VBNET.ATG"
+#line 1079 "VBNET.ATG"
out type);
}
Expect(1);
-#line 1080 "VBNET.ATG"
+#line 1082 "VBNET.ATG"
DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, type, p, attributes, library, alias, charsetModifer);
declareDeclaration.StartLocation = startPos;
declareDeclaration.EndLocation = t.EndLocation;
@@ -1947,7 +1963,7 @@ out type);
case 92: {
lexer.NextToken();
-#line 1090 "VBNET.ATG"
+#line 1092 "VBNET.ATG"
m.Check(Modifier.VBEvents);
Point startPos = t.Location;
EventDeclaration eventDeclaration;
@@ -1955,19 +1971,19 @@ out type);
Identifier();
-#line 1095 "VBNET.ATG"
+#line 1097 "VBNET.ATG"
name= t.val;
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 1097 "VBNET.ATG"
+#line 1099 "VBNET.ATG"
out type);
} else if (la.kind == 1 || la.kind == 23 || la.kind == 106) {
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1099 "VBNET.ATG"
+#line 1101 "VBNET.ATG"
p);
}
Expect(24);
@@ -1975,11 +1991,11 @@ p);
} else SynErr(220);
if (la.kind == 106) {
ImplementsClause(
-#line 1101 "VBNET.ATG"
+#line 1103 "VBNET.ATG"
out implementsClause);
}
-#line 1103 "VBNET.ATG"
+#line 1105 "VBNET.ATG"
eventDeclaration = new EventDeclaration(type, m.Modifier, p, attributes, name, implementsClause);
eventDeclaration.StartLocation = startPos;
eventDeclaration.EndLocation = t.EndLocation;
@@ -1990,26 +2006,26 @@ out implementsClause);
}
case 2: case 50: case 69: case 169: {
-#line 1110 "VBNET.ATG"
+#line 1112 "VBNET.ATG"
Point startPos = t.Location;
-#line 1112 "VBNET.ATG"
+#line 1114 "VBNET.ATG"
m.Check(Modifier.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = startPos;
VariableDeclarator(
-#line 1116 "VBNET.ATG"
+#line 1118 "VBNET.ATG"
variableDeclarators);
while (la.kind == 12) {
lexer.NextToken();
VariableDeclarator(
-#line 1117 "VBNET.ATG"
+#line 1119 "VBNET.ATG"
variableDeclarators);
}
Expect(1);
-#line 1120 "VBNET.ATG"
+#line 1122 "VBNET.ATG"
fd.EndLocation = t.EndLocation;
fd.Fields = variableDeclarators;
compilationUnit.AddChild(fd);
@@ -2018,35 +2034,35 @@ variableDeclarators);
}
case 70: {
-#line 1125 "VBNET.ATG"
+#line 1127 "VBNET.ATG"
m.Check(Modifier.Fields);
lexer.NextToken();
-#line 1126 "VBNET.ATG"
+#line 1128 "VBNET.ATG"
m.Add(Modifier.Const);
-#line 1128 "VBNET.ATG"
+#line 1130 "VBNET.ATG"
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = t.Location;
List constantDeclarators = new List();
ConstantDeclarator(
-#line 1132 "VBNET.ATG"
+#line 1134 "VBNET.ATG"
constantDeclarators);
while (la.kind == 12) {
lexer.NextToken();
ConstantDeclarator(
-#line 1133 "VBNET.ATG"
+#line 1135 "VBNET.ATG"
constantDeclarators);
}
-#line 1135 "VBNET.ATG"
+#line 1137 "VBNET.ATG"
fd.Fields = constantDeclarators;
fd.EndLocation = t.Location;
Expect(1);
-#line 1140 "VBNET.ATG"
+#line 1142 "VBNET.ATG"
fd.EndLocation = t.EndLocation;
compilationUnit.AddChild(fd);
@@ -2055,20 +2071,20 @@ constantDeclarators);
case 146: {
lexer.NextToken();
-#line 1146 "VBNET.ATG"
+#line 1148 "VBNET.ATG"
m.Check(Modifier.VBProperties);
Point startPos = t.Location;
ArrayList implementsClause = null;
Identifier();
-#line 1150 "VBNET.ATG"
+#line 1152 "VBNET.ATG"
string propertyName = t.val;
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1151 "VBNET.ATG"
+#line 1153 "VBNET.ATG"
p);
}
Expect(24);
@@ -2076,26 +2092,26 @@ p);
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 1152 "VBNET.ATG"
+#line 1154 "VBNET.ATG"
out type);
}
-#line 1154 "VBNET.ATG"
+#line 1156 "VBNET.ATG"
if(type == null) {
type = new TypeReference("System.Object");
}
if (la.kind == 106) {
ImplementsClause(
-#line 1158 "VBNET.ATG"
+#line 1160 "VBNET.ATG"
out implementsClause);
}
Expect(1);
if (
-#line 1162 "VBNET.ATG"
+#line 1164 "VBNET.ATG"
IsMustOverride(m)) {
-#line 1164 "VBNET.ATG"
+#line 1166 "VBNET.ATG"
PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
pDecl.StartLocation = startPos;
pDecl.EndLocation = t.Location;
@@ -2106,7 +2122,7 @@ IsMustOverride(m)) {
} else if (la.kind == 26 || la.kind == 100 || la.kind == 156) {
-#line 1174 "VBNET.ATG"
+#line 1176 "VBNET.ATG"
PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
pDecl.StartLocation = startPos;
pDecl.EndLocation = t.Location;
@@ -2118,13 +2134,13 @@ IsMustOverride(m)) {
PropertySetRegion setRegion;
AccessorDecls(
-#line 1184 "VBNET.ATG"
+#line 1186 "VBNET.ATG"
out getRegion, out setRegion);
Expect(87);
Expect(146);
Expect(1);
-#line 1188 "VBNET.ATG"
+#line 1190 "VBNET.ATG"
pDecl.GetRegion = getRegion;
pDecl.SetRegion = setRegion;
pDecl.BodyEnd = t.EndLocation;
@@ -2136,11 +2152,12 @@ out getRegion, out setRegion);
case 200: {
lexer.NextToken();
-#line 1195 "VBNET.ATG"
+#line 1197 "VBNET.ATG"
Point startPos = t.Location;
Expect(92);
-#line 1197 "VBNET.ATG"
+#line 1199 "VBNET.ATG"
+ m.Check(Modifier.VBCustomEvents);
EventAccessorDeclaration eventAccessorDeclaration;
EventAccessorDeclaration addHandlerAccessorDeclaration = null;
EventAccessorDeclaration removeHandlerAccessorDeclaration = null;
@@ -2149,24 +2166,24 @@ out getRegion, out setRegion);
Identifier();
-#line 1203 "VBNET.ATG"
+#line 1206 "VBNET.ATG"
string customEventName = t.val;
Expect(47);
TypeName(
-#line 1204 "VBNET.ATG"
+#line 1207 "VBNET.ATG"
out type);
if (la.kind == 106) {
ImplementsClause(
-#line 1205 "VBNET.ATG"
+#line 1208 "VBNET.ATG"
out implementsClause);
}
Expect(1);
while (StartOf(13)) {
EventAccessorDeclaration(
-#line 1208 "VBNET.ATG"
+#line 1211 "VBNET.ATG"
out eventAccessorDeclaration);
-#line 1210 "VBNET.ATG"
+#line 1213 "VBNET.ATG"
if(eventAccessorDeclaration.Type == EventAccessorType.AddHandlerAccessor)
{
addHandlerAccessorDeclaration = eventAccessorDeclaration;
@@ -2185,7 +2202,7 @@ out eventAccessorDeclaration);
Expect(92);
Expect(1);
-#line 1226 "VBNET.ATG"
+#line 1229 "VBNET.ATG"
if(addHandlerAccessorDeclaration == null)
{
Error("Need to provide AddHandler accessor.");
@@ -2203,35 +2220,127 @@ out eventAccessorDeclaration);
CustomEventDeclaration decl = new CustomEventDeclaration(m.Modifier, attributes, customEventName, addHandlerAccessorDeclaration, removeHandlerAccessorDeclaration, raiseEventAccessorDeclaration, implementsClause);
decl.StartLocation = startPos;
- decl.StartLocation = t.EndLocation;
+ decl.EndLocation = t.EndLocation;
compilationUnit.AddChild(decl);
break;
}
- default: SynErr(222); break;
- }
- }
-
- void EnumMemberDecl(
-#line 860 "VBNET.ATG"
-out FieldDeclaration f) {
+ case 187: {
+ lexer.NextToken();
-#line 862 "VBNET.ATG"
+#line 1252 "VBNET.ATG"
+ m.Check(Modifier.VBOperators);
+ Point startPos = t.Location;
+ TypeReference returnType = NullTypeReference.Instance;
+ TypeReference operandType = NullTypeReference.Instance;
+ string operandName;
+ OverloadableOperatorType operatorType;
+ AttributeSection section;
+ List parameters = new List();
+ List returnTypeAttributes = new List();
+
+ OverloadableOperator(
+#line 1262 "VBNET.ATG"
+out operatorType);
+ Expect(23);
+ if (la.kind == 54) {
+ lexer.NextToken();
+ }
+ Identifier();
+
+#line 1263 "VBNET.ATG"
+ operandName = t.val;
+ if (la.kind == 47) {
+ lexer.NextToken();
+ TypeName(
+#line 1264 "VBNET.ATG"
+out operandType);
+ }
+
+#line 1265 "VBNET.ATG"
+ parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParamModifier.In));
+ while (la.kind == 12) {
+ lexer.NextToken();
+ if (la.kind == 54) {
+ lexer.NextToken();
+ }
+ Identifier();
+
+#line 1269 "VBNET.ATG"
+ operandName = t.val;
+ if (la.kind == 47) {
+ lexer.NextToken();
+ TypeName(
+#line 1270 "VBNET.ATG"
+out operandType);
+ }
+
+#line 1271 "VBNET.ATG"
+ parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParamModifier.In));
+ }
+ Expect(24);
+ if (la.kind == 47) {
+ lexer.NextToken();
+ while (la.kind == 26) {
+ AttributeSection(
+#line 1274 "VBNET.ATG"
+out section);
+
+#line 1274 "VBNET.ATG"
+ returnTypeAttributes.Add(section);
+ }
+ TypeName(
+#line 1274 "VBNET.ATG"
+out returnType);
+ Expect(1);
+ }
+ Block(
+#line 1275 "VBNET.ATG"
+out stmt);
+ Expect(87);
+ Expect(187);
+ Expect(1);
+
+#line 1277 "VBNET.ATG"
+ OperatorDeclaration operatorDeclaration = new OperatorDeclaration(m.Modifier,
+ attributes,
+ parameters,
+ returnType,
+ operatorType
+ );
+ operatorDeclaration.ConvertToType = returnType;
+ operatorDeclaration.ReturnTypeAttributes = returnTypeAttributes;
+ operatorDeclaration.Body = (BlockStatement)stmt;
+ operatorDeclaration.StartLocation = startPos;
+ operatorDeclaration.EndLocation = t.EndLocation;
+ compilationUnit.AddChild(operatorDeclaration);
+
+ break;
+ }
+ default: SynErr(222); break;
+ }
+ }
+
+ void EnumMemberDecl(
+#line 862 "VBNET.ATG"
+out FieldDeclaration f) {
+
+#line 864 "VBNET.ATG"
Expression expr = null;List attributes = new List();
AttributeSection section = null;
VariableDeclaration varDecl = null;
while (la.kind == 26) {
AttributeSection(
-#line 866 "VBNET.ATG"
+#line 868 "VBNET.ATG"
out section);
-#line 866 "VBNET.ATG"
+#line 868 "VBNET.ATG"
attributes.Add(section);
}
Identifier();
-#line 869 "VBNET.ATG"
+#line 871 "VBNET.ATG"
f = new FieldDeclaration(attributes);
varDecl = new VariableDeclaration(t.val);
f.Fields.Add(varDecl);
@@ -2240,10 +2349,10 @@ out section);
if (la.kind == 11) {
lexer.NextToken();
Expr(
-#line 874 "VBNET.ATG"
+#line 876 "VBNET.ATG"
out expr);
-#line 874 "VBNET.ATG"
+#line 876 "VBNET.ATG"
varDecl.Initializer = expr;
}
Expect(1);
@@ -2251,7 +2360,7 @@ out expr);
void InterfaceMemberDecl() {
-#line 779 "VBNET.ATG"
+#line 781 "VBNET.ATG"
TypeReference type =null;
List p = new List();
List templates = new List();
@@ -2263,31 +2372,31 @@ out expr);
if (StartOf(14)) {
while (la.kind == 26) {
AttributeSection(
-#line 787 "VBNET.ATG"
+#line 789 "VBNET.ATG"
out section);
-#line 787 "VBNET.ATG"
+#line 789 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(7)) {
MemberModifier(
-#line 791 "VBNET.ATG"
+#line 793 "VBNET.ATG"
mod);
}
if (la.kind == 92) {
lexer.NextToken();
-#line 794 "VBNET.ATG"
+#line 796 "VBNET.ATG"
mod.Check(Modifier.VBInterfaceEvents);
Identifier();
-#line 795 "VBNET.ATG"
+#line 797 "VBNET.ATG"
name = t.val;
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 796 "VBNET.ATG"
+#line 798 "VBNET.ATG"
p);
}
Expect(24);
@@ -2295,12 +2404,12 @@ p);
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 797 "VBNET.ATG"
+#line 799 "VBNET.ATG"
out type);
}
Expect(1);
-#line 800 "VBNET.ATG"
+#line 802 "VBNET.ATG"
EventDeclaration ed = new EventDeclaration(type, mod.Modifier, p, attributes, name, null);
compilationUnit.AddChild(ed);
ed.EndLocation = t.EndLocation;
@@ -2308,27 +2417,27 @@ out type);
} else if (la.kind == 167) {
lexer.NextToken();
-#line 806 "VBNET.ATG"
+#line 808 "VBNET.ATG"
mod.Check(Modifier.VBInterfaceMethods);
Identifier();
-#line 807 "VBNET.ATG"
+#line 809 "VBNET.ATG"
name = t.val;
TypeParameterList(
-#line 808 "VBNET.ATG"
+#line 810 "VBNET.ATG"
templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 809 "VBNET.ATG"
+#line 811 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
-#line 812 "VBNET.ATG"
+#line 814 "VBNET.ATG"
MethodDeclaration md = new MethodDeclaration(name, mod.Modifier, null, p, attributes);
md.TypeReference = new TypeReference("", "System.Void");
md.EndLocation = t.EndLocation;
@@ -2338,20 +2447,20 @@ p);
} else if (la.kind == 99) {
lexer.NextToken();
-#line 820 "VBNET.ATG"
+#line 822 "VBNET.ATG"
mod.Check(Modifier.VBInterfaceMethods);
Identifier();
-#line 821 "VBNET.ATG"
+#line 823 "VBNET.ATG"
name = t.val;
TypeParameterList(
-#line 822 "VBNET.ATG"
+#line 824 "VBNET.ATG"
templates);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 823 "VBNET.ATG"
+#line 825 "VBNET.ATG"
p);
}
Expect(24);
@@ -2360,15 +2469,15 @@ p);
lexer.NextToken();
while (la.kind == 26) {
AttributeSection(
-#line 824 "VBNET.ATG"
+#line 826 "VBNET.ATG"
out returnTypeAttributeSection);
}
TypeName(
-#line 824 "VBNET.ATG"
+#line 826 "VBNET.ATG"
out type);
}
-#line 826 "VBNET.ATG"
+#line 828 "VBNET.ATG"
if(type == null) {
type = new TypeReference("System.Object");
}
@@ -2382,17 +2491,17 @@ out type);
} else if (la.kind == 146) {
lexer.NextToken();
-#line 838 "VBNET.ATG"
+#line 840 "VBNET.ATG"
mod.Check(Modifier.VBInterfaceProperties);
Identifier();
-#line 839 "VBNET.ATG"
+#line 841 "VBNET.ATG"
name = t.val;
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 840 "VBNET.ATG"
+#line 842 "VBNET.ATG"
p);
}
Expect(24);
@@ -2400,18 +2509,18 @@ p);
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 841 "VBNET.ATG"
+#line 843 "VBNET.ATG"
out type);
}
-#line 843 "VBNET.ATG"
+#line 845 "VBNET.ATG"
if(type == null) {
type = new TypeReference("System.Object");
}
Expect(1);
-#line 849 "VBNET.ATG"
+#line 851 "VBNET.ATG"
PropertyDeclaration pd = new PropertyDeclaration(name, type, mod.Modifier, attributes);
pd.Parameters = p;
pd.EndLocation = t.EndLocation;
@@ -2420,24 +2529,24 @@ out type);
} else SynErr(223);
} else if (StartOf(15)) {
NonModuleDeclaration(
-#line 856 "VBNET.ATG"
+#line 858 "VBNET.ATG"
mod, attributes);
} else SynErr(224);
}
void Expr(
-#line 1506 "VBNET.ATG"
+#line 1613 "VBNET.ATG"
out Expression expr) {
ConditionalOrExpr(
-#line 1508 "VBNET.ATG"
+#line 1615 "VBNET.ATG"
out expr);
}
void ImplementsClause(
-#line 1484 "VBNET.ATG"
+#line 1591 "VBNET.ATG"
out ArrayList baseInterfaces) {
-#line 1486 "VBNET.ATG"
+#line 1593 "VBNET.ATG"
baseInterfaces = new ArrayList();
string typename = String.Empty;
string first;
@@ -2445,76 +2554,76 @@ out ArrayList baseInterfaces) {
Expect(106);
Identifier();
-#line 1490 "VBNET.ATG"
+#line 1597 "VBNET.ATG"
first = t.val;
Expect(10);
Qualident(
-#line 1490 "VBNET.ATG"
+#line 1597 "VBNET.ATG"
out typename);
-#line 1490 "VBNET.ATG"
+#line 1597 "VBNET.ATG"
baseInterfaces.Add(first + "." + typename);
while (la.kind == 12) {
lexer.NextToken();
Identifier();
-#line 1491 "VBNET.ATG"
+#line 1598 "VBNET.ATG"
first = t.val;
Expect(10);
Qualident(
-#line 1491 "VBNET.ATG"
+#line 1598 "VBNET.ATG"
out typename);
-#line 1491 "VBNET.ATG"
+#line 1598 "VBNET.ATG"
baseInterfaces.Add(first + "." + typename);
}
}
void HandlesClause(
-#line 1442 "VBNET.ATG"
+#line 1549 "VBNET.ATG"
out ArrayList handlesClause) {
-#line 1444 "VBNET.ATG"
+#line 1551 "VBNET.ATG"
handlesClause = new ArrayList();
string name;
Expect(104);
EventMemberSpecifier(
-#line 1447 "VBNET.ATG"
+#line 1554 "VBNET.ATG"
out name);
-#line 1447 "VBNET.ATG"
+#line 1554 "VBNET.ATG"
handlesClause.Add(name);
while (la.kind == 12) {
lexer.NextToken();
EventMemberSpecifier(
-#line 1448 "VBNET.ATG"
+#line 1555 "VBNET.ATG"
out name);
-#line 1448 "VBNET.ATG"
+#line 1555 "VBNET.ATG"
handlesClause.Add(name);
}
}
void Block(
-#line 2054 "VBNET.ATG"
+#line 2161 "VBNET.ATG"
out Statement stmt) {
-#line 2057 "VBNET.ATG"
+#line 2164 "VBNET.ATG"
BlockStatement blockStmt = new BlockStatement();
blockStmt.StartLocation = t.Location;
compilationUnit.BlockStart(blockStmt);
while (StartOf(16) ||
-#line 2062 "VBNET.ATG"
+#line 2169 "VBNET.ATG"
IsEndStmtAhead()) {
if (
-#line 2062 "VBNET.ATG"
+#line 2169 "VBNET.ATG"
IsEndStmtAhead()) {
Expect(87);
EndOfStmt();
-#line 2062 "VBNET.ATG"
+#line 2169 "VBNET.ATG"
compilationUnit.AddChild(new EndStatement());
} else {
Statement();
@@ -2522,7 +2631,7 @@ IsEndStmtAhead()) {
}
}
-#line 2068 "VBNET.ATG"
+#line 2175 "VBNET.ATG"
stmt = blockStmt;
blockStmt.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
@@ -2530,65 +2639,65 @@ IsEndStmtAhead()) {
}
void Charset(
-#line 1434 "VBNET.ATG"
+#line 1541 "VBNET.ATG"
out CharsetModifier charsetModifier) {
-#line 1435 "VBNET.ATG"
+#line 1542 "VBNET.ATG"
charsetModifier = CharsetModifier.None;
if (la.kind == 99 || la.kind == 167) {
} else if (la.kind == 46) {
lexer.NextToken();
-#line 1436 "VBNET.ATG"
+#line 1543 "VBNET.ATG"
charsetModifier = CharsetModifier.ANSI;
} else if (la.kind == 49) {
lexer.NextToken();
-#line 1437 "VBNET.ATG"
+#line 1544 "VBNET.ATG"
charsetModifier = CharsetModifier.Auto;
} else if (la.kind == 176) {
lexer.NextToken();
-#line 1438 "VBNET.ATG"
+#line 1545 "VBNET.ATG"
charsetModifier = CharsetModifier.Unicode;
} else SynErr(225);
}
void VariableDeclarator(
-#line 1352 "VBNET.ATG"
+#line 1459 "VBNET.ATG"
List fieldDeclaration) {
-#line 1354 "VBNET.ATG"
+#line 1461 "VBNET.ATG"
Expression expr = null;
TypeReference type = null;ArrayList rank = null;ArrayList dimension = null;
Identifier();
-#line 1357 "VBNET.ATG"
+#line 1464 "VBNET.ATG"
string name = t.val;
if (
-#line 1358 "VBNET.ATG"
+#line 1465 "VBNET.ATG"
IsDims()) {
ArrayNameModifier(
-#line 1358 "VBNET.ATG"
+#line 1465 "VBNET.ATG"
out rank);
}
if (
-#line 1359 "VBNET.ATG"
+#line 1466 "VBNET.ATG"
IsSize()) {
ArrayInitializationModifier(
-#line 1359 "VBNET.ATG"
+#line 1466 "VBNET.ATG"
out dimension);
}
if (
-#line 1361 "VBNET.ATG"
+#line 1468 "VBNET.ATG"
IsObjectCreation()) {
Expect(47);
ObjectCreateExpression(
-#line 1361 "VBNET.ATG"
+#line 1468 "VBNET.ATG"
out expr);
-#line 1363 "VBNET.ATG"
+#line 1470 "VBNET.ATG"
if (expr is ObjectCreateExpression) {
type = ((ObjectCreateExpression)expr).CreateType;
} else {
@@ -2599,11 +2708,11 @@ out expr);
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 1370 "VBNET.ATG"
+#line 1477 "VBNET.ATG"
out type);
}
-#line 1372 "VBNET.ATG"
+#line 1479 "VBNET.ATG"
if (type != null && rank != null) {
if(type.RankSpecifier != null) {
Error("array rank only allowed one time");
@@ -2615,40 +2724,40 @@ out type);
if (la.kind == 11) {
lexer.NextToken();
VariableInitializer(
-#line 1380 "VBNET.ATG"
+#line 1487 "VBNET.ATG"
out expr);
}
} else SynErr(226);
-#line 1382 "VBNET.ATG"
+#line 1489 "VBNET.ATG"
fieldDeclaration.Add(new VariableDeclaration(name, expr, type));
}
void ConstantDeclarator(
-#line 1335 "VBNET.ATG"
+#line 1442 "VBNET.ATG"
List constantDeclaration) {
-#line 1337 "VBNET.ATG"
+#line 1444 "VBNET.ATG"
Expression expr = null;
TypeReference type = null;
string name = String.Empty;
Identifier();
-#line 1341 "VBNET.ATG"
+#line 1448 "VBNET.ATG"
name = t.val;
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 1342 "VBNET.ATG"
+#line 1449 "VBNET.ATG"
out type);
}
Expect(11);
Expr(
-#line 1343 "VBNET.ATG"
+#line 1450 "VBNET.ATG"
out expr);
-#line 1345 "VBNET.ATG"
+#line 1452 "VBNET.ATG"
VariableDeclaration f = new VariableDeclaration(name, expr);
f.TypeReference = type;
constantDeclaration.Add(f);
@@ -2656,10 +2765,10 @@ out expr);
}
void AccessorDecls(
-#line 1279 "VBNET.ATG"
+#line 1386 "VBNET.ATG"
out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
-#line 1281 "VBNET.ATG"
+#line 1388 "VBNET.ATG"
List attributes = new List();
AttributeSection section;
getBlock = null;
@@ -2667,60 +2776,60 @@ out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
while (la.kind == 26) {
AttributeSection(
-#line 1286 "VBNET.ATG"
+#line 1393 "VBNET.ATG"
out section);
-#line 1286 "VBNET.ATG"
+#line 1393 "VBNET.ATG"
attributes.Add(section);
}
if (la.kind == 100) {
GetAccessorDecl(
-#line 1288 "VBNET.ATG"
+#line 1395 "VBNET.ATG"
out getBlock, attributes);
if (la.kind == 26 || la.kind == 156) {
-#line 1290 "VBNET.ATG"
+#line 1397 "VBNET.ATG"
attributes = new List();
while (la.kind == 26) {
AttributeSection(
-#line 1291 "VBNET.ATG"
+#line 1398 "VBNET.ATG"
out section);
-#line 1291 "VBNET.ATG"
+#line 1398 "VBNET.ATG"
attributes.Add(section);
}
SetAccessorDecl(
-#line 1292 "VBNET.ATG"
+#line 1399 "VBNET.ATG"
out setBlock, attributes);
}
} else if (la.kind == 156) {
SetAccessorDecl(
-#line 1295 "VBNET.ATG"
+#line 1402 "VBNET.ATG"
out setBlock, attributes);
if (la.kind == 26 || la.kind == 100) {
-#line 1297 "VBNET.ATG"
+#line 1404 "VBNET.ATG"
attributes = new List();
while (la.kind == 26) {
AttributeSection(
-#line 1298 "VBNET.ATG"
+#line 1405 "VBNET.ATG"
out section);
-#line 1298 "VBNET.ATG"
+#line 1405 "VBNET.ATG"
attributes.Add(section);
}
GetAccessorDecl(
-#line 1299 "VBNET.ATG"
+#line 1406 "VBNET.ATG"
out getBlock, attributes);
}
} else SynErr(227);
}
void EventAccessorDeclaration(
-#line 1248 "VBNET.ATG"
+#line 1355 "VBNET.ATG"
out EventAccessorDeclaration eventAccessorDeclaration) {
-#line 1250 "VBNET.ATG"
+#line 1357 "VBNET.ATG"
Statement stmt = null;
List p = new List();
AttributeSection section;
@@ -2729,10 +2838,10 @@ out EventAccessorDeclaration eventAccessorDeclaration) {
while (la.kind == 26) {
AttributeSection(
-#line 1256 "VBNET.ATG"
+#line 1363 "VBNET.ATG"
out section);
-#line 1256 "VBNET.ATG"
+#line 1363 "VBNET.ATG"
attributes.Add(section);
}
if (la.kind == 41) {
@@ -2741,20 +2850,20 @@ out section);
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1258 "VBNET.ATG"
+#line 1365 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
Block(
-#line 1259 "VBNET.ATG"
+#line 1366 "VBNET.ATG"
out stmt);
Expect(87);
Expect(41);
Expect(1);
-#line 1261 "VBNET.ATG"
+#line 1368 "VBNET.ATG"
eventAccessorDeclaration = new EventAccessorDeclaration((BlockStatement)stmt, p, EventAccessorType.AddHandlerAccessor, attributes);
} else if (la.kind == 152) {
@@ -2763,20 +2872,20 @@ out stmt);
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1264 "VBNET.ATG"
+#line 1371 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
Block(
-#line 1265 "VBNET.ATG"
+#line 1372 "VBNET.ATG"
out stmt);
Expect(87);
Expect(152);
Expect(1);
-#line 1267 "VBNET.ATG"
+#line 1374 "VBNET.ATG"
eventAccessorDeclaration = new EventAccessorDeclaration((BlockStatement)stmt, p, EventAccessorType.RemoveHandlerAccessor, attributes);
} else if (la.kind == 149) {
@@ -2785,38 +2894,216 @@ out stmt);
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1270 "VBNET.ATG"
+#line 1377 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
Block(
-#line 1271 "VBNET.ATG"
+#line 1378 "VBNET.ATG"
out stmt);
Expect(87);
Expect(149);
Expect(1);
-#line 1273 "VBNET.ATG"
+#line 1380 "VBNET.ATG"
eventAccessorDeclaration = new EventAccessorDeclaration((BlockStatement)stmt, p, EventAccessorType.RaiseEventAccessor, attributes);
} else SynErr(228);
}
- void GetAccessorDecl(
+ void OverloadableOperator(
+#line 1292 "VBNET.ATG"
+out OverloadableOperatorType operatorType) {
+
+#line 1293 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.None;
+ switch (la.kind) {
+ case 14: {
+ lexer.NextToken();
+
+#line 1295 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Add;
+ break;
+ }
+ case 15: {
+ lexer.NextToken();
+
+#line 1297 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Subtract;
+ break;
+ }
+ case 16: {
+ lexer.NextToken();
+
+#line 1299 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Multiply;
+ break;
+ }
+ case 17: {
+ lexer.NextToken();
+
+#line 1301 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Divide;
+ break;
+ }
+ case 18: {
+ lexer.NextToken();
+
+#line 1303 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.DivideInteger;
+ break;
+ }
+ case 19: {
+ lexer.NextToken();
+
#line 1305 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Concat;
+ break;
+ }
+ case 115: {
+ lexer.NextToken();
+
+#line 1307 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Like;
+ break;
+ }
+ case 119: {
+ lexer.NextToken();
+
+#line 1309 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Modulus;
+ break;
+ }
+ case 44: {
+ lexer.NextToken();
+
+#line 1311 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.BitwiseAnd;
+ break;
+ }
+ case 137: {
+ lexer.NextToken();
+
+#line 1313 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.BitwiseOr;
+ break;
+ }
+ case 185: {
+ lexer.NextToken();
+
+#line 1315 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.ExclusiveOr;
+ break;
+ }
+ case 20: {
+ lexer.NextToken();
+
+#line 1317 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Power;
+ break;
+ }
+ case 30: {
+ lexer.NextToken();
+
+#line 1319 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.ShiftLeft;
+ break;
+ }
+ case 31: {
+ lexer.NextToken();
+
+#line 1321 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.ShiftRight;
+ break;
+ }
+ case 11: {
+ lexer.NextToken();
+
+#line 1323 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.Equality;
+ break;
+ }
+ case 27: {
+ lexer.NextToken();
+
+#line 1325 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.InEquality;
+ break;
+ }
+ case 26: {
+ lexer.NextToken();
+
+#line 1327 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.LessThan;
+ break;
+ }
+ case 29: {
+ lexer.NextToken();
+
+#line 1329 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.LessThanOrEqual;
+ break;
+ }
+ case 25: {
+ lexer.NextToken();
+
+#line 1331 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.GreaterThan;
+ break;
+ }
+ case 28: {
+ lexer.NextToken();
+
+#line 1333 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.GreaterThanOrEqual;
+ break;
+ }
+ case 74: {
+ lexer.NextToken();
+
+#line 1335 "VBNET.ATG"
+ operatorType = OverloadableOperatorType.CType;
+ break;
+ }
+ case 2: case 50: case 69: case 169: {
+ Identifier();
+
+#line 1339 "VBNET.ATG"
+ string opName = t.val;
+ switch(opName.ToLower())
+ {
+ case "istrue":
+ operatorType = OverloadableOperatorType.IsTrue;
+ break;
+ case "isfalse":
+ operatorType = OverloadableOperatorType.IsFalse;
+ break;
+ default:
+ Error("Invalid operator. Possible operators are '+', '-', 'Not', 'IsTrue', 'IsFalse'.");
+ break;
+ }
+
+ break;
+ }
+ default: SynErr(229); break;
+ }
+ }
+
+ void GetAccessorDecl(
+#line 1412 "VBNET.ATG"
out PropertyGetRegion getBlock, List attributes) {
-#line 1306 "VBNET.ATG"
+#line 1413 "VBNET.ATG"
Statement stmt = null;
Expect(100);
Expect(1);
Block(
-#line 1309 "VBNET.ATG"
+#line 1416 "VBNET.ATG"
out stmt);
-#line 1311 "VBNET.ATG"
+#line 1418 "VBNET.ATG"
getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes);
Expect(87);
@@ -2825,10 +3112,10 @@ out stmt);
}
void SetAccessorDecl(
-#line 1318 "VBNET.ATG"
+#line 1425 "VBNET.ATG"
out PropertySetRegion setBlock, List attributes) {
-#line 1320 "VBNET.ATG"
+#line 1427 "VBNET.ATG"
Statement stmt = null; List p = new List();
Expect(156);
@@ -2836,17 +3123,17 @@ out PropertySetRegion setBlock, List attributes) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
-#line 1323 "VBNET.ATG"
+#line 1430 "VBNET.ATG"
p);
}
Expect(24);
}
Expect(1);
Block(
-#line 1325 "VBNET.ATG"
+#line 1432 "VBNET.ATG"
out stmt);
-#line 1327 "VBNET.ATG"
+#line 1434 "VBNET.ATG"
setBlock = new PropertySetRegion((BlockStatement)stmt, attributes);
setBlock.Parameters = p;
@@ -2856,36 +3143,36 @@ out stmt);
}
void ArrayNameModifier(
-#line 1846 "VBNET.ATG"
+#line 1953 "VBNET.ATG"
out ArrayList arrayModifiers) {
-#line 1848 "VBNET.ATG"
+#line 1955 "VBNET.ATG"
arrayModifiers = null;
ArrayTypeModifiers(
-#line 1850 "VBNET.ATG"
+#line 1957 "VBNET.ATG"
out arrayModifiers);
}
void ArrayInitializationModifier(
-#line 1386 "VBNET.ATG"
+#line 1493 "VBNET.ATG"
out ArrayList arrayModifiers) {
-#line 1388 "VBNET.ATG"
+#line 1495 "VBNET.ATG"
arrayModifiers = null;
Expect(23);
InitializationRankList(
-#line 1390 "VBNET.ATG"
+#line 1497 "VBNET.ATG"
out arrayModifiers);
Expect(24);
}
void ObjectCreateExpression(
-#line 1762 "VBNET.ATG"
+#line 1869 "VBNET.ATG"
out Expression oce) {
-#line 1764 "VBNET.ATG"
+#line 1871 "VBNET.ATG"
TypeReference type = null;
Expression initializer = null;
ArrayList arguments = null;
@@ -2893,24 +3180,24 @@ out Expression oce) {
Expect(126);
NonArrayTypeName(
-#line 1769 "VBNET.ATG"
+#line 1876 "VBNET.ATG"
out type);
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(18)) {
ArgumentList(
-#line 1770 "VBNET.ATG"
+#line 1877 "VBNET.ATG"
out arguments);
}
Expect(24);
}
if (la.kind == 21) {
ArrayInitializer(
-#line 1771 "VBNET.ATG"
+#line 1878 "VBNET.ATG"
out initializer);
}
-#line 1773 "VBNET.ATG"
+#line 1880 "VBNET.ATG"
if (initializer == null) {
oce = new ObjectCreateExpression(type, arguments);
} else {
@@ -2922,98 +3209,98 @@ out initializer);
}
void VariableInitializer(
-#line 1406 "VBNET.ATG"
+#line 1513 "VBNET.ATG"
out Expression initializerExpression) {
-#line 1408 "VBNET.ATG"
+#line 1515 "VBNET.ATG"
initializerExpression = null;
if (StartOf(19)) {
Expr(
-#line 1410 "VBNET.ATG"
+#line 1517 "VBNET.ATG"
out initializerExpression);
} else if (la.kind == 21) {
ArrayInitializer(
-#line 1411 "VBNET.ATG"
+#line 1518 "VBNET.ATG"
out initializerExpression);
- } else SynErr(229);
+ } else SynErr(230);
}
void InitializationRankList(
-#line 1394 "VBNET.ATG"
+#line 1501 "VBNET.ATG"
out ArrayList rank) {
-#line 1396 "VBNET.ATG"
+#line 1503 "VBNET.ATG"
rank = null;
Expression expr = null;
Expr(
-#line 1399 "VBNET.ATG"
+#line 1506 "VBNET.ATG"
out expr);
-#line 1399 "VBNET.ATG"
+#line 1506 "VBNET.ATG"
rank = new ArrayList(); if (expr != null) { rank.Add(expr); }
while (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 1401 "VBNET.ATG"
+#line 1508 "VBNET.ATG"
out expr);
-#line 1401 "VBNET.ATG"
+#line 1508 "VBNET.ATG"
if (expr != null) { rank.Add(expr); }
}
}
void ArrayInitializer(
-#line 1415 "VBNET.ATG"
+#line 1522 "VBNET.ATG"
out Expression outExpr) {
-#line 1417 "VBNET.ATG"
+#line 1524 "VBNET.ATG"
Expression expr = null;
ArrayInitializerExpression initializer = new ArrayInitializerExpression();
Expect(21);
if (StartOf(20)) {
VariableInitializer(
-#line 1422 "VBNET.ATG"
+#line 1529 "VBNET.ATG"
out expr);
-#line 1424 "VBNET.ATG"
+#line 1531 "VBNET.ATG"
if (expr != null) { initializer.CreateExpressions.Add(expr); }
while (
-#line 1427 "VBNET.ATG"
+#line 1534 "VBNET.ATG"
NotFinalComma()) {
Expect(12);
VariableInitializer(
-#line 1427 "VBNET.ATG"
+#line 1534 "VBNET.ATG"
out expr);
-#line 1428 "VBNET.ATG"
+#line 1535 "VBNET.ATG"
if (expr != null) { initializer.CreateExpressions.Add(expr); }
}
}
Expect(22);
-#line 1431 "VBNET.ATG"
+#line 1538 "VBNET.ATG"
outExpr = initializer;
}
void EventMemberSpecifier(
-#line 1494 "VBNET.ATG"
+#line 1601 "VBNET.ATG"
out string name) {
-#line 1495 "VBNET.ATG"
+#line 1602 "VBNET.ATG"
string type; name = String.Empty;
if (StartOf(10)) {
Identifier();
-#line 1496 "VBNET.ATG"
+#line 1603 "VBNET.ATG"
type = t.val;
Expect(10);
Identifier();
-#line 1498 "VBNET.ATG"
+#line 1605 "VBNET.ATG"
name = type + "." + t.val;
} else if (la.kind == 123) {
lexer.NextToken();
@@ -3021,42 +3308,42 @@ out string name) {
if (StartOf(10)) {
Identifier();
-#line 1501 "VBNET.ATG"
+#line 1608 "VBNET.ATG"
name = "MyBase." + t.val;
} else if (la.kind == 91) {
lexer.NextToken();
-#line 1502 "VBNET.ATG"
+#line 1609 "VBNET.ATG"
name = "MyBase.Error";
- } else SynErr(230);
- } else SynErr(231);
+ } else SynErr(231);
+ } else SynErr(232);
}
void ConditionalOrExpr(
-#line 1641 "VBNET.ATG"
+#line 1748 "VBNET.ATG"
out Expression outExpr) {
-#line 1642 "VBNET.ATG"
+#line 1749 "VBNET.ATG"
Expression expr;
ConditionalAndExpr(
-#line 1643 "VBNET.ATG"
+#line 1750 "VBNET.ATG"
out outExpr);
while (la.kind == 138) {
lexer.NextToken();
ConditionalAndExpr(
-#line 1643 "VBNET.ATG"
+#line 1750 "VBNET.ATG"
out expr);
-#line 1643 "VBNET.ATG"
+#line 1750 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalOr, expr);
}
}
void UnaryExpr(
-#line 1515 "VBNET.ATG"
+#line 1622 "VBNET.ATG"
out Expression uExpr) {
-#line 1517 "VBNET.ATG"
+#line 1624 "VBNET.ATG"
Expression expr;
UnaryOperatorType uop = UnaryOperatorType.None;
bool isUOp = false;
@@ -3065,25 +3352,25 @@ out Expression uExpr) {
if (la.kind == 14) {
lexer.NextToken();
-#line 1521 "VBNET.ATG"
+#line 1628 "VBNET.ATG"
uop = UnaryOperatorType.Plus; isUOp = true;
} else if (la.kind == 15) {
lexer.NextToken();
-#line 1522 "VBNET.ATG"
+#line 1629 "VBNET.ATG"
uop = UnaryOperatorType.Minus; isUOp = true;
} else {
lexer.NextToken();
-#line 1524 "VBNET.ATG"
+#line 1631 "VBNET.ATG"
uop = UnaryOperatorType.Star; isUOp = true;
}
}
SimpleExpr(
-#line 1526 "VBNET.ATG"
+#line 1633 "VBNET.ATG"
out expr);
-#line 1528 "VBNET.ATG"
+#line 1635 "VBNET.ATG"
if (isUOp) {
uExpr = new UnaryOperatorExpression(expr, uop);
} else {
@@ -3093,2027 +3380,2027 @@ out expr);
}
void SimpleExpr(
-#line 1551 "VBNET.ATG"
+#line 1658 "VBNET.ATG"
out Expression pexpr) {
-#line 1553 "VBNET.ATG"
+#line 1660 "VBNET.ATG"
Expression expr;
TypeReference type = null;
string name = String.Empty;
pexpr = null;
if (StartOf(21) ||
-#line 1582 "VBNET.ATG"
+#line 1689 "VBNET.ATG"
la.kind == Tokens.Global) {
if (la.kind == 3) {
lexer.NextToken();
-#line 1561 "VBNET.ATG"
+#line 1668 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 4) {
lexer.NextToken();
-#line 1562 "VBNET.ATG"
+#line 1669 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 7) {
lexer.NextToken();
-#line 1563 "VBNET.ATG"
+#line 1670 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 6) {
lexer.NextToken();
-#line 1564 "VBNET.ATG"
+#line 1671 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 5) {
lexer.NextToken();
-#line 1565 "VBNET.ATG"
+#line 1672 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 9) {
lexer.NextToken();
-#line 1566 "VBNET.ATG"
+#line 1673 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 8) {
lexer.NextToken();
-#line 1567 "VBNET.ATG"
+#line 1674 "VBNET.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (la.kind == 173) {
lexer.NextToken();
-#line 1569 "VBNET.ATG"
+#line 1676 "VBNET.ATG"
pexpr = new PrimitiveExpression(true, "true");
} else if (la.kind == 95) {
lexer.NextToken();
-#line 1570 "VBNET.ATG"
+#line 1677 "VBNET.ATG"
pexpr = new PrimitiveExpression(false, "false");
} else if (la.kind == 129) {
lexer.NextToken();
-#line 1571 "VBNET.ATG"
+#line 1678 "VBNET.ATG"
pexpr = new PrimitiveExpression(null, "null");
} else if (la.kind == 23) {
lexer.NextToken();
Expr(
-#line 1572 "VBNET.ATG"
+#line 1679 "VBNET.ATG"
out expr);
Expect(24);
-#line 1572 "VBNET.ATG"
+#line 1679 "VBNET.ATG"
pexpr = new ParenthesizedExpression(expr);
} else if (StartOf(10)) {
Identifier();
-#line 1573 "VBNET.ATG"
+#line 1680 "VBNET.ATG"
pexpr = new IdentifierExpression(t.val);
} else if (StartOf(22)) {
-#line 1574 "VBNET.ATG"
+#line 1681 "VBNET.ATG"
string val = String.Empty;
PrimitiveTypeName(
-#line 1574 "VBNET.ATG"
+#line 1681 "VBNET.ATG"
out val);
Expect(10);
-#line 1575 "VBNET.ATG"
+#line 1682 "VBNET.ATG"
t.val = "";
Identifier();
-#line 1575 "VBNET.ATG"
+#line 1682 "VBNET.ATG"
pexpr = new FieldReferenceExpression(new TypeReferenceExpression(val), t.val);
} else if (la.kind == 118) {
lexer.NextToken();
-#line 1576 "VBNET.ATG"
+#line 1683 "VBNET.ATG"
pexpr = new ThisReferenceExpression();
} else if (la.kind == 123 || la.kind == 124) {
-#line 1577 "VBNET.ATG"
+#line 1684 "VBNET.ATG"
Expression retExpr = null;
if (la.kind == 123) {
lexer.NextToken();
-#line 1578 "VBNET.ATG"
+#line 1685 "VBNET.ATG"
retExpr = new BaseReferenceExpression();
} else if (la.kind == 124) {
lexer.NextToken();
-#line 1579 "VBNET.ATG"
+#line 1686 "VBNET.ATG"
retExpr = new ClassReferenceExpression();
- } else SynErr(232);
+ } else SynErr(233);
Expect(10);
IdentifierOrKeyword(
-#line 1581 "VBNET.ATG"
+#line 1688 "VBNET.ATG"
out name);
-#line 1581 "VBNET.ATG"
+#line 1688 "VBNET.ATG"
pexpr = new FieldReferenceExpression(retExpr, name);
} else if (
-#line 1582 "VBNET.ATG"
+#line 1689 "VBNET.ATG"
la.kind == Tokens.Global) {
TypeName(
-#line 1582 "VBNET.ATG"
+#line 1689 "VBNET.ATG"
out type);
-#line 1582 "VBNET.ATG"
+#line 1689 "VBNET.ATG"
pexpr = new TypeReferenceExpression(type);
} else if (la.kind == 126) {
ObjectCreateExpression(
-#line 1583 "VBNET.ATG"
+#line 1690 "VBNET.ATG"
out expr);
-#line 1583 "VBNET.ATG"
+#line 1690 "VBNET.ATG"
pexpr = expr;
} else if (la.kind == 74 || la.kind == 81) {
if (la.kind == 81) {
lexer.NextToken();
} else if (la.kind == 74) {
lexer.NextToken();
- } else SynErr(233);
+ } else SynErr(234);
Expect(23);
Expr(
-#line 1584 "VBNET.ATG"
+#line 1691 "VBNET.ATG"
out expr);
Expect(12);
TypeName(
-#line 1584 "VBNET.ATG"
+#line 1691 "VBNET.ATG"
out type);
Expect(24);
-#line 1584 "VBNET.ATG"
+#line 1691 "VBNET.ATG"
pexpr = new CastExpression(type, expr);
} else if (la.kind == 195) {
lexer.NextToken();
Expect(23);
Expr(
-#line 1585 "VBNET.ATG"
+#line 1692 "VBNET.ATG"
out expr);
Expect(12);
TypeName(
-#line 1585 "VBNET.ATG"
+#line 1692 "VBNET.ATG"
out type);
Expect(24);
-#line 1585 "VBNET.ATG"
+#line 1692 "VBNET.ATG"
pexpr = new BinaryOperatorExpression(expr, BinaryOperatorType.AsCast, new TypeReferenceExpression(type));
} else if (StartOf(23)) {
CastTarget(
-#line 1586 "VBNET.ATG"
+#line 1693 "VBNET.ATG"
out type);
Expect(23);
Expr(
-#line 1586 "VBNET.ATG"
+#line 1693 "VBNET.ATG"
out expr);
Expect(24);
-#line 1586 "VBNET.ATG"
+#line 1693 "VBNET.ATG"
pexpr = new CastExpression(type, expr, true);
} else if (la.kind == 42) {
lexer.NextToken();
Expr(
-#line 1587 "VBNET.ATG"
+#line 1694 "VBNET.ATG"
out expr);
-#line 1587 "VBNET.ATG"
+#line 1694 "VBNET.ATG"
pexpr = new AddressOfExpression(expr);
} else if (la.kind == 101) {
lexer.NextToken();
Expect(23);
TypeName(
-#line 1588 "VBNET.ATG"
+#line 1695 "VBNET.ATG"
out type);
Expect(24);
-#line 1588 "VBNET.ATG"
+#line 1695 "VBNET.ATG"
pexpr = new TypeOfExpression(type);
} else {
lexer.NextToken();
SimpleExpr(
-#line 1589 "VBNET.ATG"
+#line 1696 "VBNET.ATG"
out expr);
Expect(112);
TypeName(
-#line 1589 "VBNET.ATG"
+#line 1696 "VBNET.ATG"
out type);
-#line 1589 "VBNET.ATG"
+#line 1696 "VBNET.ATG"
pexpr = new TypeOfIsExpression(expr, type);
}
while (la.kind == 10 || la.kind == 23) {
if (la.kind == 10) {
lexer.NextToken();
IdentifierOrKeyword(
-#line 1592 "VBNET.ATG"
+#line 1699 "VBNET.ATG"
out name);
-#line 1592 "VBNET.ATG"
+#line 1699 "VBNET.ATG"
pexpr = new FieldReferenceExpression(pexpr, name);
} else {
lexer.NextToken();
-#line 1593 "VBNET.ATG"
+#line 1700 "VBNET.ATG"
ArrayList parameters = new ArrayList();
if (StartOf(24)) {
if (StartOf(19)) {
Argument(
-#line 1595 "VBNET.ATG"
+#line 1702 "VBNET.ATG"
out expr);
-#line 1595 "VBNET.ATG"
+#line 1702 "VBNET.ATG"
if (expr != null) { parameters.Add(expr); }
}
while (la.kind == 12) {
lexer.NextToken();
if (StartOf(19)) {
Argument(
-#line 1598 "VBNET.ATG"
+#line 1705 "VBNET.ATG"
out expr);
-#line 1598 "VBNET.ATG"
+#line 1705 "VBNET.ATG"
if (expr != null) { parameters.Add(expr); }
}
}
}
Expect(24);
-#line 1601 "VBNET.ATG"
+#line 1708 "VBNET.ATG"
pexpr = new InvocationExpression(pexpr, parameters);
}
}
} else if (la.kind == 10) {
lexer.NextToken();
IdentifierOrKeyword(
-#line 1605 "VBNET.ATG"
+#line 1712 "VBNET.ATG"
out name);
-#line 1605 "VBNET.ATG"
+#line 1712 "VBNET.ATG"
pexpr = new FieldReferenceExpression(pexpr, name);
while (la.kind == 10 || la.kind == 23) {
if (la.kind == 10) {
lexer.NextToken();
IdentifierOrKeyword(
-#line 1607 "VBNET.ATG"
+#line 1714 "VBNET.ATG"
out name);
-#line 1607 "VBNET.ATG"
+#line 1714 "VBNET.ATG"
pexpr = new FieldReferenceExpression(pexpr, name);
} else {
lexer.NextToken();
-#line 1608 "VBNET.ATG"
+#line 1715 "VBNET.ATG"
ArrayList parameters = new ArrayList();
if (StartOf(24)) {
-#line 1610 "VBNET.ATG"
+#line 1717 "VBNET.ATG"
expr = null;
if (StartOf(19)) {
Argument(
-#line 1610 "VBNET.ATG"
+#line 1717 "VBNET.ATG"
out expr);
}
-#line 1610 "VBNET.ATG"
+#line 1717 "VBNET.ATG"
if (expr != null) { parameters.Add(expr); }
while (la.kind == 12) {
lexer.NextToken();
-#line 1612 "VBNET.ATG"
+#line 1719 "VBNET.ATG"
expr = null;
if (StartOf(19)) {
Argument(
-#line 1613 "VBNET.ATG"
+#line 1720 "VBNET.ATG"
out expr);
}
-#line 1613 "VBNET.ATG"
+#line 1720 "VBNET.ATG"
if (expr != null) { parameters.Add(expr); }
}
}
Expect(24);
-#line 1616 "VBNET.ATG"
+#line 1723 "VBNET.ATG"
pexpr = new InvocationExpression(pexpr, parameters);
}
}
- } else SynErr(234);
+ } else SynErr(235);
}
void AssignmentOperator(
-#line 1536 "VBNET.ATG"
+#line 1643 "VBNET.ATG"
out AssignmentOperatorType op) {
-#line 1537 "VBNET.ATG"
+#line 1644 "VBNET.ATG"
op = AssignmentOperatorType.None;
switch (la.kind) {
case 11: {
lexer.NextToken();
-#line 1538 "VBNET.ATG"
+#line 1645 "VBNET.ATG"
op = AssignmentOperatorType.Assign;
break;
}
case 40: {
lexer.NextToken();
-#line 1539 "VBNET.ATG"
+#line 1646 "VBNET.ATG"
op = AssignmentOperatorType.ConcatString;
break;
}
case 32: {
lexer.NextToken();
-#line 1540 "VBNET.ATG"
+#line 1647 "VBNET.ATG"
op = AssignmentOperatorType.Add;
break;
}
case 34: {
lexer.NextToken();
-#line 1541 "VBNET.ATG"
+#line 1648 "VBNET.ATG"
op = AssignmentOperatorType.Subtract;
break;
}
case 35: {
lexer.NextToken();
-#line 1542 "VBNET.ATG"
+#line 1649 "VBNET.ATG"
op = AssignmentOperatorType.Multiply;
break;
}
case 36: {
lexer.NextToken();
-#line 1543 "VBNET.ATG"
+#line 1650 "VBNET.ATG"
op = AssignmentOperatorType.Divide;
break;
}
case 37: {
lexer.NextToken();
-#line 1544 "VBNET.ATG"
+#line 1651 "VBNET.ATG"
op = AssignmentOperatorType.DivideInteger;
break;
}
case 33: {
lexer.NextToken();
-#line 1545 "VBNET.ATG"
+#line 1652 "VBNET.ATG"
op = AssignmentOperatorType.Power;
break;
}
case 38: {
lexer.NextToken();
-#line 1546 "VBNET.ATG"
+#line 1653 "VBNET.ATG"
op = AssignmentOperatorType.ShiftLeft;
break;
}
case 39: {
lexer.NextToken();
-#line 1547 "VBNET.ATG"
+#line 1654 "VBNET.ATG"
op = AssignmentOperatorType.ShiftRight;
break;
}
- default: SynErr(235); break;
+ default: SynErr(236); break;
}
}
void IdentifierOrKeyword(
-#line 2639 "VBNET.ATG"
+#line 2746 "VBNET.ATG"
out string name) {
-#line 2641 "VBNET.ATG"
+#line 2748 "VBNET.ATG"
name = String.Empty;
switch (la.kind) {
case 2: case 50: case 69: case 169: {
Identifier();
-#line 2644 "VBNET.ATG"
+#line 2751 "VBNET.ATG"
name = t.val;
break;
}
case 41: {
lexer.NextToken();
-#line 2645 "VBNET.ATG"
+#line 2752 "VBNET.ATG"
name = t.val;
break;
}
case 42: {
lexer.NextToken();
-#line 2646 "VBNET.ATG"
+#line 2753 "VBNET.ATG"
name = t.val;
break;
}
case 43: {
lexer.NextToken();
-#line 2647 "VBNET.ATG"
+#line 2754 "VBNET.ATG"
name = t.val;
break;
}
case 44: {
lexer.NextToken();
-#line 2648 "VBNET.ATG"
+#line 2755 "VBNET.ATG"
name = t.val;
break;
}
case 45: {
lexer.NextToken();
-#line 2649 "VBNET.ATG"
+#line 2756 "VBNET.ATG"
name = t.val;
break;
}
case 46: {
lexer.NextToken();
-#line 2650 "VBNET.ATG"
+#line 2757 "VBNET.ATG"
name = t.val;
break;
}
case 47: {
lexer.NextToken();
-#line 2651 "VBNET.ATG"
+#line 2758 "VBNET.ATG"
name = t.val;
break;
}
case 48: {
lexer.NextToken();
-#line 2652 "VBNET.ATG"
+#line 2759 "VBNET.ATG"
name = t.val;
break;
}
case 49: {
lexer.NextToken();
-#line 2653 "VBNET.ATG"
+#line 2760 "VBNET.ATG"
name = t.val;
break;
}
case 51: {
lexer.NextToken();
-#line 2654 "VBNET.ATG"
+#line 2761 "VBNET.ATG"
name = t.val;
break;
}
case 52: {
lexer.NextToken();
-#line 2655 "VBNET.ATG"
+#line 2762 "VBNET.ATG"
name = t.val;
break;
}
case 53: {
lexer.NextToken();
-#line 2656 "VBNET.ATG"
+#line 2763 "VBNET.ATG"
name = t.val;
break;
}
case 54: {
lexer.NextToken();
-#line 2657 "VBNET.ATG"
+#line 2764 "VBNET.ATG"
name = t.val;
break;
}
case 55: {
lexer.NextToken();
-#line 2658 "VBNET.ATG"
+#line 2765 "VBNET.ATG"
name = t.val;
break;
}
case 56: {
lexer.NextToken();
-#line 2659 "VBNET.ATG"
+#line 2766 "VBNET.ATG"
name = t.val;
break;
}
case 57: {
lexer.NextToken();
-#line 2660 "VBNET.ATG"
+#line 2767 "VBNET.ATG"
name = t.val;
break;
}
case 58: {
lexer.NextToken();
-#line 2661 "VBNET.ATG"
+#line 2768 "VBNET.ATG"
name = t.val;
break;
}
case 59: {
lexer.NextToken();
-#line 2662 "VBNET.ATG"
+#line 2769 "VBNET.ATG"
name = t.val;
break;
}
case 60: {
lexer.NextToken();
-#line 2663 "VBNET.ATG"
+#line 2770 "VBNET.ATG"
name = t.val;
break;
}
case 61: {
lexer.NextToken();
-#line 2664 "VBNET.ATG"
+#line 2771 "VBNET.ATG"
name = t.val;
break;
}
case 62: {
lexer.NextToken();
-#line 2665 "VBNET.ATG"
+#line 2772 "VBNET.ATG"
name = t.val;
break;
}
case 63: {
lexer.NextToken();
-#line 2666 "VBNET.ATG"
+#line 2773 "VBNET.ATG"
name = t.val;
break;
}
case 64: {
lexer.NextToken();
-#line 2667 "VBNET.ATG"
+#line 2774 "VBNET.ATG"
name = t.val;
break;
}
case 65: {
lexer.NextToken();
-#line 2668 "VBNET.ATG"
+#line 2775 "VBNET.ATG"
name = t.val;
break;
}
case 66: {
lexer.NextToken();
-#line 2669 "VBNET.ATG"
+#line 2776 "VBNET.ATG"
name = t.val;
break;
}
case 67: {
lexer.NextToken();
-#line 2670 "VBNET.ATG"
+#line 2777 "VBNET.ATG"
name = t.val;
break;
}
case 68: {
lexer.NextToken();
-#line 2671 "VBNET.ATG"
+#line 2778 "VBNET.ATG"
name = t.val;
break;
}
case 70: {
lexer.NextToken();
-#line 2672 "VBNET.ATG"
+#line 2779 "VBNET.ATG"
name = t.val;
break;
}
case 71: {
lexer.NextToken();
-#line 2673 "VBNET.ATG"
+#line 2780 "VBNET.ATG"
name = t.val;
break;
}
case 72: {
lexer.NextToken();
-#line 2674 "VBNET.ATG"
+#line 2781 "VBNET.ATG"
name = t.val;
break;
}
case 73: {
lexer.NextToken();
-#line 2675 "VBNET.ATG"
+#line 2782 "VBNET.ATG"
name = t.val;
break;
}
case 74: {
lexer.NextToken();
-#line 2676 "VBNET.ATG"
+#line 2783 "VBNET.ATG"
name = t.val;
break;
}
case 75: {
lexer.NextToken();
-#line 2677 "VBNET.ATG"
+#line 2784 "VBNET.ATG"
name = t.val;
break;
}
case 76: {
lexer.NextToken();
-#line 2678 "VBNET.ATG"
+#line 2785 "VBNET.ATG"
name = t.val;
break;
}
case 77: {
lexer.NextToken();
-#line 2679 "VBNET.ATG"
+#line 2786 "VBNET.ATG"
name = t.val;
break;
}
case 78: {
lexer.NextToken();
-#line 2680 "VBNET.ATG"
+#line 2787 "VBNET.ATG"
name = t.val;
break;
}
case 79: {
lexer.NextToken();
-#line 2681 "VBNET.ATG"
+#line 2788 "VBNET.ATG"
name = t.val;
break;
}
case 80: {
lexer.NextToken();
-#line 2682 "VBNET.ATG"
+#line 2789 "VBNET.ATG"
name = t.val;
break;
}
case 81: {
lexer.NextToken();
-#line 2683 "VBNET.ATG"
+#line 2790 "VBNET.ATG"
name = t.val;
break;
}
case 82: {
lexer.NextToken();
-#line 2684 "VBNET.ATG"
+#line 2791 "VBNET.ATG"
name = t.val;
break;
}
case 83: {
lexer.NextToken();
-#line 2685 "VBNET.ATG"
+#line 2792 "VBNET.ATG"
name = t.val;
break;
}
case 84: {
lexer.NextToken();
-#line 2686 "VBNET.ATG"
+#line 2793 "VBNET.ATG"
name = t.val;
break;
}
case 85: {
lexer.NextToken();
-#line 2687 "VBNET.ATG"
+#line 2794 "VBNET.ATG"
name = t.val;
break;
}
case 86: {
lexer.NextToken();
-#line 2688 "VBNET.ATG"
+#line 2795 "VBNET.ATG"
name = t.val;
break;
}
case 87: {
lexer.NextToken();
-#line 2689 "VBNET.ATG"
+#line 2796 "VBNET.ATG"
name = t.val;
break;
}
case 88: {
lexer.NextToken();
-#line 2690 "VBNET.ATG"
+#line 2797 "VBNET.ATG"
name = t.val;
break;
}
case 89: {
lexer.NextToken();
-#line 2691 "VBNET.ATG"
+#line 2798 "VBNET.ATG"
name = t.val;
break;
}
case 90: {
lexer.NextToken();
-#line 2692 "VBNET.ATG"
+#line 2799 "VBNET.ATG"
name = t.val;
break;
}
case 91: {
lexer.NextToken();
-#line 2693 "VBNET.ATG"
+#line 2800 "VBNET.ATG"
name = t.val;
break;
}
case 92: {
lexer.NextToken();
-#line 2694 "VBNET.ATG"
+#line 2801 "VBNET.ATG"
name = t.val;
break;
}
case 93: {
lexer.NextToken();
-#line 2695 "VBNET.ATG"
+#line 2802 "VBNET.ATG"
name = t.val;
break;
}
case 94: {
lexer.NextToken();
-#line 2696 "VBNET.ATG"
+#line 2803 "VBNET.ATG"
name = t.val;
break;
}
case 95: {
lexer.NextToken();
-#line 2697 "VBNET.ATG"
+#line 2804 "VBNET.ATG"
name = t.val;
break;
}
case 96: {
lexer.NextToken();
-#line 2698 "VBNET.ATG"
+#line 2805 "VBNET.ATG"
name = t.val;
break;
}
case 97: {
lexer.NextToken();
-#line 2699 "VBNET.ATG"
+#line 2806 "VBNET.ATG"
name = t.val;
break;
}
case 98: {
lexer.NextToken();
-#line 2700 "VBNET.ATG"
+#line 2807 "VBNET.ATG"
name = t.val;
break;
}
case 99: {
lexer.NextToken();
-#line 2701 "VBNET.ATG"
+#line 2808 "VBNET.ATG"
name = t.val;
break;
}
case 100: {
lexer.NextToken();
-#line 2702 "VBNET.ATG"
+#line 2809 "VBNET.ATG"
name = t.val;
break;
}
case 101: {
lexer.NextToken();
-#line 2703 "VBNET.ATG"
+#line 2810 "VBNET.ATG"
name = t.val;
break;
}
case 102: {
lexer.NextToken();
-#line 2704 "VBNET.ATG"
+#line 2811 "VBNET.ATG"
name = t.val;
break;
}
case 103: {
lexer.NextToken();
-#line 2705 "VBNET.ATG"
+#line 2812 "VBNET.ATG"
name = t.val;
break;
}
case 104: {
lexer.NextToken();
-#line 2706 "VBNET.ATG"
+#line 2813 "VBNET.ATG"
name = t.val;
break;
}
case 105: {
lexer.NextToken();
-#line 2707 "VBNET.ATG"
+#line 2814 "VBNET.ATG"
name = t.val;
break;
}
case 106: {
lexer.NextToken();
-#line 2708 "VBNET.ATG"
+#line 2815 "VBNET.ATG"
name = t.val;
break;
}
case 107: {
lexer.NextToken();
-#line 2709 "VBNET.ATG"
+#line 2816 "VBNET.ATG"
name = t.val;
break;
}
case 108: {
lexer.NextToken();
-#line 2710 "VBNET.ATG"
+#line 2817 "VBNET.ATG"
name = t.val;
break;
}
case 109: {
lexer.NextToken();
-#line 2711 "VBNET.ATG"
+#line 2818 "VBNET.ATG"
name = t.val;
break;
}
case 110: {
lexer.NextToken();
-#line 2712 "VBNET.ATG"
+#line 2819 "VBNET.ATG"
name = t.val;
break;
}
case 111: {
lexer.NextToken();
-#line 2713 "VBNET.ATG"
+#line 2820 "VBNET.ATG"
name = t.val;
break;
}
case 112: {
lexer.NextToken();
-#line 2714 "VBNET.ATG"
+#line 2821 "VBNET.ATG"
name = t.val;
break;
}
case 113: {
lexer.NextToken();
-#line 2715 "VBNET.ATG"
+#line 2822 "VBNET.ATG"
name = t.val;
break;
}
case 114: {
lexer.NextToken();
-#line 2716 "VBNET.ATG"
+#line 2823 "VBNET.ATG"
name = t.val;
break;
}
case 115: {
lexer.NextToken();
-#line 2717 "VBNET.ATG"
+#line 2824 "VBNET.ATG"
name = t.val;
break;
}
case 116: {
lexer.NextToken();
-#line 2718 "VBNET.ATG"
+#line 2825 "VBNET.ATG"
name = t.val;
break;
}
case 117: {
lexer.NextToken();
-#line 2719 "VBNET.ATG"
+#line 2826 "VBNET.ATG"
name = t.val;
break;
}
case 118: {
lexer.NextToken();
-#line 2720 "VBNET.ATG"
+#line 2827 "VBNET.ATG"
name = t.val;
break;
}
case 119: {
lexer.NextToken();
-#line 2721 "VBNET.ATG"
+#line 2828 "VBNET.ATG"
name = t.val;
break;
}
case 120: {
lexer.NextToken();
-#line 2722 "VBNET.ATG"
+#line 2829 "VBNET.ATG"
name = t.val;
break;
}
case 121: {
lexer.NextToken();
-#line 2723 "VBNET.ATG"
+#line 2830 "VBNET.ATG"
name = t.val;
break;
}
case 122: {
lexer.NextToken();
-#line 2724 "VBNET.ATG"
+#line 2831 "VBNET.ATG"
name = t.val;
break;
}
case 123: {
lexer.NextToken();
-#line 2725 "VBNET.ATG"
+#line 2832 "VBNET.ATG"
name = t.val;
break;
}
case 124: {
lexer.NextToken();
-#line 2726 "VBNET.ATG"
+#line 2833 "VBNET.ATG"
name = t.val;
break;
}
case 125: {
lexer.NextToken();
-#line 2727 "VBNET.ATG"
+#line 2834 "VBNET.ATG"
name = t.val;
break;
}
case 126: {
lexer.NextToken();
-#line 2728 "VBNET.ATG"
+#line 2835 "VBNET.ATG"
name = t.val;
break;
}
case 127: {
lexer.NextToken();
-#line 2729 "VBNET.ATG"
+#line 2836 "VBNET.ATG"
name = t.val;
break;
}
case 128: {
lexer.NextToken();
-#line 2730 "VBNET.ATG"
+#line 2837 "VBNET.ATG"
name = t.val;
break;
}
case 129: {
lexer.NextToken();
-#line 2731 "VBNET.ATG"
+#line 2838 "VBNET.ATG"
name = t.val;
break;
}
case 130: {
lexer.NextToken();
-#line 2732 "VBNET.ATG"
+#line 2839 "VBNET.ATG"
name = t.val;
break;
}
case 131: {
lexer.NextToken();
-#line 2733 "VBNET.ATG"
+#line 2840 "VBNET.ATG"
name = t.val;
break;
}
case 132: {
lexer.NextToken();
-#line 2734 "VBNET.ATG"
+#line 2841 "VBNET.ATG"
name = t.val;
break;
}
case 134: {
lexer.NextToken();
-#line 2735 "VBNET.ATG"
+#line 2842 "VBNET.ATG"
name = t.val;
break;
}
case 135: {
lexer.NextToken();
-#line 2736 "VBNET.ATG"
+#line 2843 "VBNET.ATG"
name = t.val;
break;
}
case 136: {
lexer.NextToken();
-#line 2737 "VBNET.ATG"
+#line 2844 "VBNET.ATG"
name = t.val;
break;
}
case 137: {
lexer.NextToken();
-#line 2738 "VBNET.ATG"
+#line 2845 "VBNET.ATG"
name = t.val;
break;
}
case 138: {
lexer.NextToken();
-#line 2739 "VBNET.ATG"
+#line 2846 "VBNET.ATG"
name = t.val;
break;
}
case 139: {
lexer.NextToken();
-#line 2740 "VBNET.ATG"
+#line 2847 "VBNET.ATG"
name = t.val;
break;
}
case 140: {
lexer.NextToken();
-#line 2741 "VBNET.ATG"
+#line 2848 "VBNET.ATG"
name = t.val;
break;
}
case 142: {
lexer.NextToken();
-#line 2742 "VBNET.ATG"
+#line 2849 "VBNET.ATG"
name = t.val;
break;
}
case 143: {
lexer.NextToken();
-#line 2743 "VBNET.ATG"
+#line 2850 "VBNET.ATG"
name = t.val;
break;
}
case 144: {
lexer.NextToken();
-#line 2744 "VBNET.ATG"
+#line 2851 "VBNET.ATG"
name = t.val;
break;
}
case 145: {
lexer.NextToken();
-#line 2745 "VBNET.ATG"
+#line 2852 "VBNET.ATG"
name = t.val;
break;
}
case 146: {
lexer.NextToken();
-#line 2746 "VBNET.ATG"
+#line 2853 "VBNET.ATG"
name = t.val;
break;
}
case 147: {
lexer.NextToken();
-#line 2747 "VBNET.ATG"
+#line 2854 "VBNET.ATG"
name = t.val;
break;
}
case 148: {
lexer.NextToken();
-#line 2748 "VBNET.ATG"
+#line 2855 "VBNET.ATG"
name = t.val;
break;
}
case 149: {
lexer.NextToken();
-#line 2749 "VBNET.ATG"
+#line 2856 "VBNET.ATG"
name = t.val;
break;
}
case 150: {
lexer.NextToken();
-#line 2750 "VBNET.ATG"
+#line 2857 "VBNET.ATG"
name = t.val;
break;
}
case 151: {
lexer.NextToken();
-#line 2751 "VBNET.ATG"
+#line 2858 "VBNET.ATG"
name = t.val;
break;
}
case 152: {
lexer.NextToken();
-#line 2752 "VBNET.ATG"
+#line 2859 "VBNET.ATG"
name = t.val;
break;
}
case 153: {
lexer.NextToken();
-#line 2753 "VBNET.ATG"
+#line 2860 "VBNET.ATG"
name = t.val;
break;
}
case 154: {
lexer.NextToken();
-#line 2754 "VBNET.ATG"
+#line 2861 "VBNET.ATG"
name = t.val;
break;
}
case 155: {
lexer.NextToken();
-#line 2755 "VBNET.ATG"
+#line 2862 "VBNET.ATG"
name = t.val;
break;
}
case 156: {
lexer.NextToken();
-#line 2756 "VBNET.ATG"
+#line 2863 "VBNET.ATG"
name = t.val;
break;
}
case 157: {
lexer.NextToken();
-#line 2757 "VBNET.ATG"
+#line 2864 "VBNET.ATG"
name = t.val;
break;
}
case 158: {
lexer.NextToken();
-#line 2758 "VBNET.ATG"
+#line 2865 "VBNET.ATG"
name = t.val;
break;
}
case 159: {
lexer.NextToken();
-#line 2759 "VBNET.ATG"
+#line 2866 "VBNET.ATG"
name = t.val;
break;
}
case 160: {
lexer.NextToken();
-#line 2760 "VBNET.ATG"
+#line 2867 "VBNET.ATG"
name = t.val;
break;
}
case 161: {
lexer.NextToken();
-#line 2761 "VBNET.ATG"
+#line 2868 "VBNET.ATG"
name = t.val;
break;
}
case 162: {
lexer.NextToken();
-#line 2762 "VBNET.ATG"
+#line 2869 "VBNET.ATG"
name = t.val;
break;
}
case 163: {
lexer.NextToken();
-#line 2763 "VBNET.ATG"
+#line 2870 "VBNET.ATG"
name = t.val;
break;
}
case 165: {
lexer.NextToken();
-#line 2764 "VBNET.ATG"
+#line 2871 "VBNET.ATG"
name = t.val;
break;
}
case 166: {
lexer.NextToken();
-#line 2765 "VBNET.ATG"
+#line 2872 "VBNET.ATG"
name = t.val;
break;
}
case 167: {
lexer.NextToken();
-#line 2766 "VBNET.ATG"
+#line 2873 "VBNET.ATG"
name = t.val;
break;
}
case 168: {
lexer.NextToken();
-#line 2767 "VBNET.ATG"
+#line 2874 "VBNET.ATG"
name = t.val;
break;
}
case 170: {
lexer.NextToken();
-#line 2768 "VBNET.ATG"
+#line 2875 "VBNET.ATG"
name = t.val;
break;
}
case 171: {
lexer.NextToken();
-#line 2769 "VBNET.ATG"
+#line 2876 "VBNET.ATG"
name = t.val;
break;
}
case 172: {
lexer.NextToken();
-#line 2770 "VBNET.ATG"
+#line 2877 "VBNET.ATG"
name = t.val;
break;
}
case 173: {
lexer.NextToken();
-#line 2771 "VBNET.ATG"
+#line 2878 "VBNET.ATG"
name = t.val;
break;
}
case 174: {
lexer.NextToken();
-#line 2772 "VBNET.ATG"
+#line 2879 "VBNET.ATG"
name = t.val;
break;
}
case 175: {
lexer.NextToken();
-#line 2773 "VBNET.ATG"
+#line 2880 "VBNET.ATG"
name = t.val;
break;
}
case 176: {
lexer.NextToken();
-#line 2774 "VBNET.ATG"
+#line 2881 "VBNET.ATG"
name = t.val;
break;
}
case 177: {
lexer.NextToken();
-#line 2775 "VBNET.ATG"
+#line 2882 "VBNET.ATG"
name = t.val;
break;
}
case 178: {
lexer.NextToken();
-#line 2776 "VBNET.ATG"
+#line 2883 "VBNET.ATG"
name = t.val;
break;
}
case 179: {
lexer.NextToken();
-#line 2777 "VBNET.ATG"
+#line 2884 "VBNET.ATG"
name = t.val;
break;
}
case 180: {
lexer.NextToken();
-#line 2778 "VBNET.ATG"
+#line 2885 "VBNET.ATG"
name = t.val;
break;
}
case 181: {
lexer.NextToken();
-#line 2779 "VBNET.ATG"
+#line 2886 "VBNET.ATG"
name = t.val;
break;
}
case 182: {
lexer.NextToken();
-#line 2780 "VBNET.ATG"
+#line 2887 "VBNET.ATG"
name = t.val;
break;
}
case 183: {
lexer.NextToken();
-#line 2781 "VBNET.ATG"
+#line 2888 "VBNET.ATG"
name = t.val;
break;
}
case 184: {
lexer.NextToken();
-#line 2782 "VBNET.ATG"
+#line 2889 "VBNET.ATG"
name = t.val;
break;
}
case 185: {
lexer.NextToken();
-#line 2783 "VBNET.ATG"
+#line 2890 "VBNET.ATG"
name = t.val;
break;
}
case 186: {
lexer.NextToken();
-#line 2784 "VBNET.ATG"
+#line 2891 "VBNET.ATG"
name = t.val;
break;
}
case 187: {
lexer.NextToken();
-#line 2785 "VBNET.ATG"
+#line 2892 "VBNET.ATG"
name = t.val;
break;
}
case 188: {
lexer.NextToken();
-#line 2786 "VBNET.ATG"
+#line 2893 "VBNET.ATG"
name = t.val;
break;
}
case 189: {
lexer.NextToken();
-#line 2787 "VBNET.ATG"
+#line 2894 "VBNET.ATG"
name = t.val;
break;
}
case 190: {
lexer.NextToken();
-#line 2788 "VBNET.ATG"
+#line 2895 "VBNET.ATG"
name = t.val;
break;
}
case 191: {
lexer.NextToken();
-#line 2789 "VBNET.ATG"
+#line 2896 "VBNET.ATG"
name = t.val;
break;
}
case 192: {
lexer.NextToken();
-#line 2790 "VBNET.ATG"
+#line 2897 "VBNET.ATG"
name = t.val;
break;
}
case 193: {
lexer.NextToken();
-#line 2791 "VBNET.ATG"
+#line 2898 "VBNET.ATG"
name = t.val;
break;
}
case 196: {
lexer.NextToken();
-#line 2792 "VBNET.ATG"
+#line 2899 "VBNET.ATG"
name = t.val;
break;
}
case 197: {
lexer.NextToken();
-#line 2793 "VBNET.ATG"
+#line 2900 "VBNET.ATG"
name = t.val;
break;
}
case 198: {
lexer.NextToken();
-#line 2794 "VBNET.ATG"
+#line 2901 "VBNET.ATG"
name = t.val;
break;
}
case 199: {
lexer.NextToken();
-#line 2795 "VBNET.ATG"
+#line 2902 "VBNET.ATG"
name = t.val;
break;
}
- default: SynErr(236); break;
+ default: SynErr(237); break;
}
}
void CastTarget(
-#line 1623 "VBNET.ATG"
+#line 1730 "VBNET.ATG"
out TypeReference type) {
-#line 1625 "VBNET.ATG"
+#line 1732 "VBNET.ATG"
type = null;
switch (la.kind) {
case 58: {
lexer.NextToken();
-#line 1627 "VBNET.ATG"
+#line 1734 "VBNET.ATG"
type = new TypeReference("System.Boolean");
break;
}
case 59: {
lexer.NextToken();
-#line 1628 "VBNET.ATG"
+#line 1735 "VBNET.ATG"
type = new TypeReference("System.Byte");
break;
}
case 60: {
lexer.NextToken();
-#line 1629 "VBNET.ATG"
+#line 1736 "VBNET.ATG"
type = new TypeReference("System.Char");
break;
}
case 61: {
lexer.NextToken();
-#line 1630 "VBNET.ATG"
+#line 1737 "VBNET.ATG"
type = new TypeReference("System.DateTime");
break;
}
case 63: {
lexer.NextToken();
-#line 1631 "VBNET.ATG"
+#line 1738 "VBNET.ATG"
type = new TypeReference("System.Decimal");
break;
}
case 62: {
lexer.NextToken();
-#line 1632 "VBNET.ATG"
+#line 1739 "VBNET.ATG"
type = new TypeReference("System.Double");
break;
}
case 65: {
lexer.NextToken();
-#line 1633 "VBNET.ATG"
+#line 1740 "VBNET.ATG"
type = new TypeReference("System.Int32");
break;
}
case 67: {
lexer.NextToken();
-#line 1634 "VBNET.ATG"
+#line 1741 "VBNET.ATG"
type = new TypeReference("System.Int64");
break;
}
case 68: {
lexer.NextToken();
-#line 1635 "VBNET.ATG"
+#line 1742 "VBNET.ATG"
type = new TypeReference("System.Object");
break;
}
case 71: {
lexer.NextToken();
-#line 1636 "VBNET.ATG"
+#line 1743 "VBNET.ATG"
type = new TypeReference("System.Int16");
break;
}
case 72: {
lexer.NextToken();
-#line 1637 "VBNET.ATG"
+#line 1744 "VBNET.ATG"
type = new TypeReference("System.Single");
break;
}
case 73: {
lexer.NextToken();
-#line 1638 "VBNET.ATG"
+#line 1745 "VBNET.ATG"
type = new TypeReference("System.String");
break;
}
- default: SynErr(237); break;
+ default: SynErr(238); break;
}
}
void Argument(
-#line 1799 "VBNET.ATG"
+#line 1906 "VBNET.ATG"
out Expression argumentexpr) {
-#line 1801 "VBNET.ATG"
+#line 1908 "VBNET.ATG"
Expression expr;
argumentexpr = null;
string name;
if (
-#line 1805 "VBNET.ATG"
+#line 1912 "VBNET.ATG"
IsNamedAssign()) {
Identifier();
-#line 1805 "VBNET.ATG"
+#line 1912 "VBNET.ATG"
name = t.val;
Expect(13);
Expect(11);
Expr(
-#line 1805 "VBNET.ATG"
+#line 1912 "VBNET.ATG"
out expr);
-#line 1807 "VBNET.ATG"
+#line 1914 "VBNET.ATG"
argumentexpr = new NamedArgumentExpression(name, expr);
} else if (StartOf(19)) {
Expr(
-#line 1810 "VBNET.ATG"
+#line 1917 "VBNET.ATG"
out argumentexpr);
- } else SynErr(238);
+ } else SynErr(239);
}
void ConditionalAndExpr(
-#line 1646 "VBNET.ATG"
+#line 1753 "VBNET.ATG"
out Expression outExpr) {
-#line 1647 "VBNET.ATG"
+#line 1754 "VBNET.ATG"
Expression expr;
InclusiveOrExpr(
-#line 1648 "VBNET.ATG"
+#line 1755 "VBNET.ATG"
out outExpr);
while (la.kind == 45) {
lexer.NextToken();
InclusiveOrExpr(
-#line 1648 "VBNET.ATG"
+#line 1755 "VBNET.ATG"
out expr);
-#line 1648 "VBNET.ATG"
+#line 1755 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalAnd, expr);
}
}
void InclusiveOrExpr(
-#line 1651 "VBNET.ATG"
+#line 1758 "VBNET.ATG"
out Expression outExpr) {
-#line 1652 "VBNET.ATG"
+#line 1759 "VBNET.ATG"
Expression expr;
ExclusiveOrExpr(
-#line 1653 "VBNET.ATG"
+#line 1760 "VBNET.ATG"
out outExpr);
while (la.kind == 185) {
lexer.NextToken();
ExclusiveOrExpr(
-#line 1653 "VBNET.ATG"
+#line 1760 "VBNET.ATG"
out expr);
-#line 1653 "VBNET.ATG"
+#line 1760 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.ExclusiveOr, expr);
}
}
void ExclusiveOrExpr(
-#line 1656 "VBNET.ATG"
+#line 1763 "VBNET.ATG"
out Expression outExpr) {
-#line 1657 "VBNET.ATG"
+#line 1764 "VBNET.ATG"
Expression expr;
AndExpr(
-#line 1658 "VBNET.ATG"
+#line 1765 "VBNET.ATG"
out outExpr);
while (la.kind == 137) {
lexer.NextToken();
AndExpr(
-#line 1658 "VBNET.ATG"
+#line 1765 "VBNET.ATG"
out expr);
-#line 1658 "VBNET.ATG"
+#line 1765 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseOr, expr);
}
}
void AndExpr(
-#line 1661 "VBNET.ATG"
+#line 1768 "VBNET.ATG"
out Expression outExpr) {
-#line 1662 "VBNET.ATG"
+#line 1769 "VBNET.ATG"
Expression expr;
NotExpr(
-#line 1663 "VBNET.ATG"
+#line 1770 "VBNET.ATG"
out outExpr);
while (la.kind == 44) {
lexer.NextToken();
NotExpr(
-#line 1663 "VBNET.ATG"
+#line 1770 "VBNET.ATG"
out expr);
-#line 1663 "VBNET.ATG"
+#line 1770 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseAnd, expr);
}
}
void NotExpr(
-#line 1666 "VBNET.ATG"
+#line 1773 "VBNET.ATG"
out Expression outExpr) {
-#line 1667 "VBNET.ATG"
+#line 1774 "VBNET.ATG"
UnaryOperatorType uop = UnaryOperatorType.None;
while (la.kind == 128) {
lexer.NextToken();
-#line 1668 "VBNET.ATG"
+#line 1775 "VBNET.ATG"
uop = UnaryOperatorType.Not;
}
EqualityExpr(
-#line 1669 "VBNET.ATG"
+#line 1776 "VBNET.ATG"
out outExpr);
-#line 1670 "VBNET.ATG"
+#line 1777 "VBNET.ATG"
if (uop != UnaryOperatorType.None)
outExpr = new UnaryOperatorExpression(outExpr, uop);
}
void EqualityExpr(
-#line 1675 "VBNET.ATG"
+#line 1782 "VBNET.ATG"
out Expression outExpr) {
-#line 1677 "VBNET.ATG"
+#line 1784 "VBNET.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
RelationalExpr(
-#line 1680 "VBNET.ATG"
+#line 1787 "VBNET.ATG"
out outExpr);
while (la.kind == 11 || la.kind == 27 || la.kind == 115) {
if (la.kind == 27) {
lexer.NextToken();
-#line 1683 "VBNET.ATG"
+#line 1790 "VBNET.ATG"
op = BinaryOperatorType.InEquality;
} else if (la.kind == 11) {
lexer.NextToken();
-#line 1684 "VBNET.ATG"
+#line 1791 "VBNET.ATG"
op = BinaryOperatorType.Equality;
} else {
lexer.NextToken();
-#line 1685 "VBNET.ATG"
+#line 1792 "VBNET.ATG"
op = BinaryOperatorType.Like;
}
RelationalExpr(
-#line 1687 "VBNET.ATG"
+#line 1794 "VBNET.ATG"
out expr);
-#line 1687 "VBNET.ATG"
+#line 1794 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void RelationalExpr(
-#line 1691 "VBNET.ATG"
+#line 1798 "VBNET.ATG"
out Expression outExpr) {
-#line 1693 "VBNET.ATG"
+#line 1800 "VBNET.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
ShiftExpr(
-#line 1696 "VBNET.ATG"
+#line 1803 "VBNET.ATG"
out outExpr);
while (StartOf(25)) {
if (StartOf(26)) {
if (la.kind == 26) {
lexer.NextToken();
-#line 1699 "VBNET.ATG"
+#line 1806 "VBNET.ATG"
op = BinaryOperatorType.LessThan;
} else if (la.kind == 25) {
lexer.NextToken();
-#line 1700 "VBNET.ATG"
+#line 1807 "VBNET.ATG"
op = BinaryOperatorType.GreaterThan;
} else if (la.kind == 29) {
lexer.NextToken();
-#line 1701 "VBNET.ATG"
+#line 1808 "VBNET.ATG"
op = BinaryOperatorType.LessThanOrEqual;
} else if (la.kind == 28) {
lexer.NextToken();
-#line 1702 "VBNET.ATG"
+#line 1809 "VBNET.ATG"
op = BinaryOperatorType.GreaterThanOrEqual;
- } else SynErr(239);
+ } else SynErr(240);
ShiftExpr(
-#line 1704 "VBNET.ATG"
+#line 1811 "VBNET.ATG"
out expr);
-#line 1704 "VBNET.ATG"
+#line 1811 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
} else {
if (la.kind == 112) {
lexer.NextToken();
-#line 1707 "VBNET.ATG"
+#line 1814 "VBNET.ATG"
op = BinaryOperatorType.ReferenceEquality;
} else if (la.kind == 189) {
lexer.NextToken();
-#line 1708 "VBNET.ATG"
+#line 1815 "VBNET.ATG"
op = BinaryOperatorType.ReferenceInequality;
- } else SynErr(240);
+ } else SynErr(241);
Expr(
-#line 1709 "VBNET.ATG"
+#line 1816 "VBNET.ATG"
out expr);
-#line 1709 "VBNET.ATG"
+#line 1816 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
}
void ShiftExpr(
-#line 1713 "VBNET.ATG"
+#line 1820 "VBNET.ATG"
out Expression outExpr) {
-#line 1715 "VBNET.ATG"
+#line 1822 "VBNET.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
AdditiveExpr(
-#line 1718 "VBNET.ATG"
+#line 1825 "VBNET.ATG"
out outExpr);
while (la.kind == 30 || la.kind == 31) {
if (la.kind == 30) {
lexer.NextToken();
-#line 1721 "VBNET.ATG"
+#line 1828 "VBNET.ATG"
op = BinaryOperatorType.ShiftLeft;
} else {
lexer.NextToken();
-#line 1722 "VBNET.ATG"
+#line 1829 "VBNET.ATG"
op = BinaryOperatorType.ShiftRight;
}
AdditiveExpr(
-#line 1724 "VBNET.ATG"
+#line 1831 "VBNET.ATG"
out expr);
-#line 1724 "VBNET.ATG"
+#line 1831 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void AdditiveExpr(
-#line 1728 "VBNET.ATG"
+#line 1835 "VBNET.ATG"
out Expression outExpr) {
-#line 1730 "VBNET.ATG"
+#line 1837 "VBNET.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
MultiplicativeExpr(
-#line 1733 "VBNET.ATG"
+#line 1840 "VBNET.ATG"
out outExpr);
while (la.kind == 14 || la.kind == 15 || la.kind == 19) {
if (la.kind == 14) {
lexer.NextToken();
-#line 1736 "VBNET.ATG"
+#line 1843 "VBNET.ATG"
op = BinaryOperatorType.Add;
} else if (la.kind == 15) {
lexer.NextToken();
-#line 1737 "VBNET.ATG"
+#line 1844 "VBNET.ATG"
op = BinaryOperatorType.Subtract;
} else {
lexer.NextToken();
-#line 1738 "VBNET.ATG"
+#line 1845 "VBNET.ATG"
op = BinaryOperatorType.Concat;
}
MultiplicativeExpr(
-#line 1740 "VBNET.ATG"
+#line 1847 "VBNET.ATG"
out expr);
-#line 1740 "VBNET.ATG"
+#line 1847 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void MultiplicativeExpr(
-#line 1744 "VBNET.ATG"
+#line 1851 "VBNET.ATG"
out Expression outExpr) {
-#line 1746 "VBNET.ATG"
+#line 1853 "VBNET.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
UnaryExpr(
-#line 1749 "VBNET.ATG"
+#line 1856 "VBNET.ATG"
out outExpr);
while (StartOf(27)) {
if (la.kind == 16) {
lexer.NextToken();
-#line 1752 "VBNET.ATG"
+#line 1859 "VBNET.ATG"
op = BinaryOperatorType.Multiply;
} else if (la.kind == 17) {
lexer.NextToken();
-#line 1753 "VBNET.ATG"
+#line 1860 "VBNET.ATG"
op = BinaryOperatorType.Divide;
} else if (la.kind == 18) {
lexer.NextToken();
-#line 1754 "VBNET.ATG"
+#line 1861 "VBNET.ATG"
op = BinaryOperatorType.DivideInteger;
} else if (la.kind == 119) {
lexer.NextToken();
-#line 1755 "VBNET.ATG"
+#line 1862 "VBNET.ATG"
op = BinaryOperatorType.Modulus;
} else {
lexer.NextToken();
-#line 1756 "VBNET.ATG"
+#line 1863 "VBNET.ATG"
op = BinaryOperatorType.Power;
}
UnaryExpr(
-#line 1758 "VBNET.ATG"
+#line 1865 "VBNET.ATG"
out expr);
-#line 1758 "VBNET.ATG"
+#line 1865 "VBNET.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void NonArrayTypeName(
-#line 1827 "VBNET.ATG"
+#line 1934 "VBNET.ATG"
out TypeReference typeref) {
-#line 1829 "VBNET.ATG"
+#line 1936 "VBNET.ATG"
string name;
typeref = null;
if (StartOf(10)) {
Qualident(
-#line 1832 "VBNET.ATG"
+#line 1939 "VBNET.ATG"
out name);
-#line 1832 "VBNET.ATG"
+#line 1939 "VBNET.ATG"
typeref = new TypeReference(name);
if (
-#line 1833 "VBNET.ATG"
+#line 1940 "VBNET.ATG"
la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
lexer.NextToken();
Expect(196);
TypeArgumentList(
-#line 1834 "VBNET.ATG"
+#line 1941 "VBNET.ATG"
typeref.GenericTypes);
Expect(24);
}
} else if (la.kind == 132) {
lexer.NextToken();
-#line 1836 "VBNET.ATG"
+#line 1943 "VBNET.ATG"
typeref = new TypeReference("System.Object");
} else if (la.kind == 194) {
lexer.NextToken();
Expect(10);
Qualident(
-#line 1837 "VBNET.ATG"
+#line 1944 "VBNET.ATG"
out name);
-#line 1838 "VBNET.ATG"
+#line 1945 "VBNET.ATG"
typeref = new TypeReference(name); typeref.IsGlobal = true;
if (
-#line 1839 "VBNET.ATG"
+#line 1946 "VBNET.ATG"
la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
lexer.NextToken();
Expect(196);
TypeArgumentList(
-#line 1840 "VBNET.ATG"
+#line 1947 "VBNET.ATG"
typeref.GenericTypes);
Expect(24);
}
} else if (StartOf(22)) {
PrimitiveTypeName(
-#line 1842 "VBNET.ATG"
+#line 1949 "VBNET.ATG"
out name);
-#line 1842 "VBNET.ATG"
+#line 1949 "VBNET.ATG"
typeref = new TypeReference(name);
- } else SynErr(241);
+ } else SynErr(242);
}
void ArgumentList(
-#line 1784 "VBNET.ATG"
+#line 1891 "VBNET.ATG"
out ArrayList arguments) {
-#line 1786 "VBNET.ATG"
+#line 1893 "VBNET.ATG"
arguments = new ArrayList();
Expression expr = null;
if (StartOf(19)) {
Argument(
-#line 1790 "VBNET.ATG"
+#line 1897 "VBNET.ATG"
out expr);
-#line 1790 "VBNET.ATG"
+#line 1897 "VBNET.ATG"
if (expr != null) { arguments.Add(expr); }
while (la.kind == 12) {
lexer.NextToken();
Argument(
-#line 1793 "VBNET.ATG"
+#line 1900 "VBNET.ATG"
out expr);
-#line 1793 "VBNET.ATG"
+#line 1900 "VBNET.ATG"
if (expr != null) { arguments.Add(expr); }
}
}
}
void ArrayTypeModifiers(
-#line 1855 "VBNET.ATG"
+#line 1962 "VBNET.ATG"
out ArrayList arrayModifiers) {
-#line 1857 "VBNET.ATG"
+#line 1964 "VBNET.ATG"
arrayModifiers = new ArrayList();
int i = 0;
while (
-#line 1860 "VBNET.ATG"
+#line 1967 "VBNET.ATG"
IsDims()) {
Expect(23);
if (la.kind == 12 || la.kind == 24) {
RankList(
-#line 1862 "VBNET.ATG"
+#line 1969 "VBNET.ATG"
out i);
}
-#line 1864 "VBNET.ATG"
+#line 1971 "VBNET.ATG"
arrayModifiers.Add(i);
Expect(24);
}
-#line 1869 "VBNET.ATG"
+#line 1976 "VBNET.ATG"
if(arrayModifiers.Count == 0) {
arrayModifiers = null;
}
@@ -5121,89 +5408,89 @@ out i);
}
void TypeArgumentList(
-#line 1882 "VBNET.ATG"
+#line 1989 "VBNET.ATG"
List typeArguments) {
-#line 1884 "VBNET.ATG"
+#line 1991 "VBNET.ATG"
TypeReference typeref;
TypeName(
-#line 1886 "VBNET.ATG"
+#line 1993 "VBNET.ATG"
out typeref);
-#line 1886 "VBNET.ATG"
+#line 1993 "VBNET.ATG"
if (typeref != null) typeArguments.Add(typeref);
while (la.kind == 12) {
lexer.NextToken();
TypeName(
-#line 1889 "VBNET.ATG"
+#line 1996 "VBNET.ATG"
out typeref);
-#line 1889 "VBNET.ATG"
+#line 1996 "VBNET.ATG"
if (typeref != null) typeArguments.Add(typeref);
}
}
void RankList(
-#line 1876 "VBNET.ATG"
+#line 1983 "VBNET.ATG"
out int i) {
-#line 1877 "VBNET.ATG"
+#line 1984 "VBNET.ATG"
i = 0;
while (la.kind == 12) {
lexer.NextToken();
-#line 1878 "VBNET.ATG"
+#line 1985 "VBNET.ATG"
++i;
}
}
void Attribute(
-#line 1914 "VBNET.ATG"
+#line 2021 "VBNET.ATG"
out ICSharpCode.NRefactory.Parser.AST.Attribute attribute) {
-#line 1915 "VBNET.ATG"
+#line 2022 "VBNET.ATG"
string name;
Qualident(
-#line 1916 "VBNET.ATG"
+#line 2023 "VBNET.ATG"
out name);
-#line 1917 "VBNET.ATG"
+#line 2024 "VBNET.ATG"
List positional = new List();
List named = new List();
if (la.kind == 23) {
AttributeArguments(
-#line 1920 "VBNET.ATG"
+#line 2027 "VBNET.ATG"
positional, named);
}
-#line 1922 "VBNET.ATG"
+#line 2029 "VBNET.ATG"
attribute = new ICSharpCode.NRefactory.Parser.AST.Attribute(name, positional, named);
}
void AttributeArguments(
-#line 1927 "VBNET.ATG"
+#line 2034 "VBNET.ATG"
List positional, List named) {
-#line 1929 "VBNET.ATG"
+#line 2036 "VBNET.ATG"
bool nameFound = false;
string name = "";
Expression expr;
Expect(23);
if (
-#line 1935 "VBNET.ATG"
+#line 2042 "VBNET.ATG"
IsNotClosingParenthesis()) {
if (
-#line 1937 "VBNET.ATG"
+#line 2044 "VBNET.ATG"
IsNamedAssign()) {
-#line 1937 "VBNET.ATG"
+#line 2044 "VBNET.ATG"
nameFound = true;
IdentifierOrKeyword(
-#line 1938 "VBNET.ATG"
+#line 2045 "VBNET.ATG"
out name);
if (la.kind == 13) {
lexer.NextToken();
@@ -5211,10 +5498,10 @@ out name);
Expect(11);
}
Expr(
-#line 1940 "VBNET.ATG"
+#line 2047 "VBNET.ATG"
out expr);
-#line 1942 "VBNET.ATG"
+#line 2049 "VBNET.ATG"
if (expr != null) { if(name == "") positional.Add(expr);
else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
}
@@ -5222,13 +5509,13 @@ out expr);
while (la.kind == 12) {
lexer.NextToken();
if (
-#line 1949 "VBNET.ATG"
+#line 2056 "VBNET.ATG"
IsNamedAssign()) {
-#line 1949 "VBNET.ATG"
+#line 2056 "VBNET.ATG"
nameFound = true;
IdentifierOrKeyword(
-#line 1950 "VBNET.ATG"
+#line 2057 "VBNET.ATG"
out name);
if (la.kind == 13) {
lexer.NextToken();
@@ -5236,14 +5523,14 @@ out name);
Expect(11);
} else if (StartOf(19)) {
-#line 1952 "VBNET.ATG"
+#line 2059 "VBNET.ATG"
if (nameFound) Error("no positional argument after named argument");
- } else SynErr(242);
+ } else SynErr(243);
Expr(
-#line 1953 "VBNET.ATG"
+#line 2060 "VBNET.ATG"
out expr);
-#line 1953 "VBNET.ATG"
+#line 2060 "VBNET.ATG"
if (expr != null) { if(name == "") positional.Add(expr);
else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
}
@@ -5254,10 +5541,10 @@ out expr);
}
void FormalParameter(
-#line 2022 "VBNET.ATG"
+#line 2129 "VBNET.ATG"
out ParameterDeclarationExpression p) {
-#line 2024 "VBNET.ATG"
+#line 2131 "VBNET.ATG"
TypeReference type = null;
ParamModifiers mod = new ParamModifiers(this);
Expression expr = null;
@@ -5265,28 +5552,28 @@ out ParameterDeclarationExpression p) {
while (StartOf(28)) {
ParameterModifier(
-#line 2029 "VBNET.ATG"
+#line 2136 "VBNET.ATG"
mod);
}
Identifier();
-#line 2030 "VBNET.ATG"
+#line 2137 "VBNET.ATG"
string parameterName = t.val;
if (
-#line 2031 "VBNET.ATG"
+#line 2138 "VBNET.ATG"
IsDims()) {
ArrayTypeModifiers(
-#line 2031 "VBNET.ATG"
+#line 2138 "VBNET.ATG"
out arrayModifiers);
}
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 2032 "VBNET.ATG"
+#line 2139 "VBNET.ATG"
out type);
}
-#line 2034 "VBNET.ATG"
+#line 2141 "VBNET.ATG"
if(type != null) {
if (arrayModifiers != null) {
if (type.RankSpecifier != null) {
@@ -5302,45 +5589,45 @@ out type);
if (la.kind == 11) {
lexer.NextToken();
Expr(
-#line 2046 "VBNET.ATG"
+#line 2153 "VBNET.ATG"
out expr);
}
-#line 2048 "VBNET.ATG"
+#line 2155 "VBNET.ATG"
mod.Check();
p = new ParameterDeclarationExpression(type, parameterName, mod.Modifier, expr);
}
void ParameterModifier(
-#line 2820 "VBNET.ATG"
+#line 2927 "VBNET.ATG"
ParamModifiers m) {
if (la.kind == 54) {
lexer.NextToken();
-#line 2821 "VBNET.ATG"
+#line 2928 "VBNET.ATG"
m.Add(ParamModifier.In);
} else if (la.kind == 52) {
lexer.NextToken();
-#line 2822 "VBNET.ATG"
+#line 2929 "VBNET.ATG"
m.Add(ParamModifier.Ref);
} else if (la.kind == 136) {
lexer.NextToken();
-#line 2823 "VBNET.ATG"
+#line 2930 "VBNET.ATG"
m.Add(ParamModifier.Optional);
} else if (la.kind == 143) {
lexer.NextToken();
-#line 2824 "VBNET.ATG"
+#line 2931 "VBNET.ATG"
m.Add(ParamModifier.Params);
- } else SynErr(243);
+ } else SynErr(244);
}
void Statement() {
-#line 2076 "VBNET.ATG"
+#line 2183 "VBNET.ATG"
Statement stmt = null;
Point startPos = la.Location;
string label = String.Empty;
@@ -5348,34 +5635,34 @@ ParamModifiers m) {
if (la.kind == 1 || la.kind == 13) {
} else if (
-#line 2082 "VBNET.ATG"
+#line 2189 "VBNET.ATG"
IsLabel()) {
LabelName(
-#line 2082 "VBNET.ATG"
+#line 2189 "VBNET.ATG"
out label);
-#line 2084 "VBNET.ATG"
+#line 2191 "VBNET.ATG"
compilationUnit.AddChild(new LabelStatement(t.val));
Expect(13);
Statement();
} else if (StartOf(29)) {
EmbeddedStatement(
-#line 2087 "VBNET.ATG"
+#line 2194 "VBNET.ATG"
out stmt);
-#line 2087 "VBNET.ATG"
+#line 2194 "VBNET.ATG"
compilationUnit.AddChild(stmt);
} else if (StartOf(30)) {
LocalDeclarationStatement(
-#line 2088 "VBNET.ATG"
+#line 2195 "VBNET.ATG"
out stmt);
-#line 2088 "VBNET.ATG"
+#line 2195 "VBNET.ATG"
compilationUnit.AddChild(stmt);
- } else SynErr(244);
+ } else SynErr(245);
-#line 2091 "VBNET.ATG"
+#line 2198 "VBNET.ATG"
if (stmt != null) {
stmt.StartLocation = startPos;
stmt.EndLocation = t.Location;
@@ -5384,30 +5671,30 @@ out stmt);
}
void LabelName(
-#line 2472 "VBNET.ATG"
+#line 2579 "VBNET.ATG"
out string name) {
-#line 2474 "VBNET.ATG"
+#line 2581 "VBNET.ATG"
name = String.Empty;
if (StartOf(10)) {
Identifier();
-#line 2476 "VBNET.ATG"
+#line 2583 "VBNET.ATG"
name = t.val;
} else if (la.kind == 5) {
lexer.NextToken();
-#line 2477 "VBNET.ATG"
+#line 2584 "VBNET.ATG"
name = t.val;
- } else SynErr(245);
+ } else SynErr(246);
}
void EmbeddedStatement(
-#line 2130 "VBNET.ATG"
+#line 2237 "VBNET.ATG"
out Statement statement) {
-#line 2132 "VBNET.ATG"
+#line 2239 "VBNET.ATG"
Statement embeddedStatement = null;
statement = null;
Expression expr = null;
@@ -5417,103 +5704,103 @@ out Statement statement) {
case 93: {
lexer.NextToken();
-#line 2137 "VBNET.ATG"
+#line 2244 "VBNET.ATG"
ExitType exitType = ExitType.None;
switch (la.kind) {
case 167: {
lexer.NextToken();
-#line 2139 "VBNET.ATG"
+#line 2246 "VBNET.ATG"
exitType = ExitType.Sub;
break;
}
case 99: {
lexer.NextToken();
-#line 2141 "VBNET.ATG"
+#line 2248 "VBNET.ATG"
exitType = ExitType.Function;
break;
}
case 146: {
lexer.NextToken();
-#line 2143 "VBNET.ATG"
+#line 2250 "VBNET.ATG"
exitType = ExitType.Property;
break;
}
case 82: {
lexer.NextToken();
-#line 2145 "VBNET.ATG"
+#line 2252 "VBNET.ATG"
exitType = ExitType.Do;
break;
}
case 97: {
lexer.NextToken();
-#line 2147 "VBNET.ATG"
+#line 2254 "VBNET.ATG"
exitType = ExitType.For;
break;
}
case 174: {
lexer.NextToken();
-#line 2149 "VBNET.ATG"
+#line 2256 "VBNET.ATG"
exitType = ExitType.Try;
break;
}
case 181: {
lexer.NextToken();
-#line 2151 "VBNET.ATG"
+#line 2258 "VBNET.ATG"
exitType = ExitType.While;
break;
}
case 155: {
lexer.NextToken();
-#line 2153 "VBNET.ATG"
+#line 2260 "VBNET.ATG"
exitType = ExitType.Select;
break;
}
- default: SynErr(246); break;
+ default: SynErr(247); break;
}
-#line 2155 "VBNET.ATG"
+#line 2262 "VBNET.ATG"
statement = new ExitStatement(exitType);
break;
}
case 174: {
TryStatement(
-#line 2156 "VBNET.ATG"
+#line 2263 "VBNET.ATG"
out statement);
break;
}
case 186: {
lexer.NextToken();
-#line 2157 "VBNET.ATG"
+#line 2264 "VBNET.ATG"
ContinueType continueType = ContinueType.None;
if (la.kind == 82 || la.kind == 97 || la.kind == 181) {
if (la.kind == 82) {
lexer.NextToken();
-#line 2157 "VBNET.ATG"
+#line 2264 "VBNET.ATG"
continueType = ContinueType.Do;
} else if (la.kind == 97) {
lexer.NextToken();
-#line 2157 "VBNET.ATG"
+#line 2264 "VBNET.ATG"
continueType = ContinueType.For;
} else {
lexer.NextToken();
-#line 2157 "VBNET.ATG"
+#line 2264 "VBNET.ATG"
continueType = ContinueType.While;
}
}
-#line 2157 "VBNET.ATG"
+#line 2264 "VBNET.ATG"
statement = new ContinueStatement(continueType);
break;
}
@@ -5521,11 +5808,11 @@ out statement);
lexer.NextToken();
if (StartOf(19)) {
Expr(
-#line 2159 "VBNET.ATG"
+#line 2266 "VBNET.ATG"
out expr);
}
-#line 2159 "VBNET.ATG"
+#line 2266 "VBNET.ATG"
statement = new ThrowStatement(expr);
break;
}
@@ -5533,27 +5820,27 @@ out expr);
lexer.NextToken();
if (StartOf(19)) {
Expr(
-#line 2161 "VBNET.ATG"
+#line 2268 "VBNET.ATG"
out expr);
}
-#line 2161 "VBNET.ATG"
+#line 2268 "VBNET.ATG"
statement = new ReturnStatement(expr);
break;
}
case 168: {
lexer.NextToken();
Expr(
-#line 2163 "VBNET.ATG"
+#line 2270 "VBNET.ATG"
out expr);
EndOfStmt();
Block(
-#line 2163 "VBNET.ATG"
+#line 2270 "VBNET.ATG"
out embeddedStatement);
Expect(87);
Expect(168);
-#line 2164 "VBNET.ATG"
+#line 2271 "VBNET.ATG"
statement = new LockStatement(expr, embeddedStatement);
break;
}
@@ -5561,42 +5848,42 @@ out embeddedStatement);
lexer.NextToken();
Identifier();
-#line 2166 "VBNET.ATG"
+#line 2273 "VBNET.ATG"
name = t.val;
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(18)) {
ArgumentList(
-#line 2167 "VBNET.ATG"
+#line 2274 "VBNET.ATG"
out p);
}
Expect(24);
}
-#line 2168 "VBNET.ATG"
+#line 2275 "VBNET.ATG"
statement = new RaiseEventStatement(name, p);
break;
}
case 182: {
WithStatement(
-#line 2170 "VBNET.ATG"
+#line 2277 "VBNET.ATG"
out statement);
break;
}
case 41: {
lexer.NextToken();
-#line 2172 "VBNET.ATG"
+#line 2279 "VBNET.ATG"
Expression handlerExpr = null;
Expr(
-#line 2173 "VBNET.ATG"
+#line 2280 "VBNET.ATG"
out expr);
Expect(12);
Expr(
-#line 2173 "VBNET.ATG"
+#line 2280 "VBNET.ATG"
out handlerExpr);
-#line 2175 "VBNET.ATG"
+#line 2282 "VBNET.ATG"
statement = new AddHandlerStatement(expr, handlerExpr);
break;
@@ -5604,17 +5891,17 @@ out handlerExpr);
case 152: {
lexer.NextToken();
-#line 2178 "VBNET.ATG"
+#line 2285 "VBNET.ATG"
Expression handlerExpr = null;
Expr(
-#line 2179 "VBNET.ATG"
+#line 2286 "VBNET.ATG"
out expr);
Expect(12);
Expr(
-#line 2179 "VBNET.ATG"
+#line 2286 "VBNET.ATG"
out handlerExpr);
-#line 2181 "VBNET.ATG"
+#line 2288 "VBNET.ATG"
statement = new RemoveHandlerStatement(expr, handlerExpr);
break;
@@ -5622,16 +5909,16 @@ out handlerExpr);
case 181: {
lexer.NextToken();
Expr(
-#line 2184 "VBNET.ATG"
+#line 2291 "VBNET.ATG"
out expr);
EndOfStmt();
Block(
-#line 2185 "VBNET.ATG"
+#line 2292 "VBNET.ATG"
out embeddedStatement);
Expect(87);
Expect(181);
-#line 2187 "VBNET.ATG"
+#line 2294 "VBNET.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start);
break;
@@ -5639,23 +5926,23 @@ out embeddedStatement);
case 82: {
lexer.NextToken();
-#line 2192 "VBNET.ATG"
+#line 2299 "VBNET.ATG"
ConditionType conditionType = ConditionType.None;
if (la.kind == 177 || la.kind == 181) {
WhileOrUntil(
-#line 2195 "VBNET.ATG"
+#line 2302 "VBNET.ATG"
out conditionType);
Expr(
-#line 2195 "VBNET.ATG"
+#line 2302 "VBNET.ATG"
out expr);
EndOfStmt();
Block(
-#line 2196 "VBNET.ATG"
+#line 2303 "VBNET.ATG"
out embeddedStatement);
Expect(117);
-#line 2199 "VBNET.ATG"
+#line 2306 "VBNET.ATG"
statement = new DoLoopStatement(expr,
embeddedStatement,
conditionType == ConditionType.While ? ConditionType.DoWhile : conditionType,
@@ -5664,28 +5951,28 @@ out embeddedStatement);
} else if (la.kind == 1 || la.kind == 13) {
EndOfStmt();
Block(
-#line 2206 "VBNET.ATG"
+#line 2313 "VBNET.ATG"
out embeddedStatement);
Expect(117);
if (la.kind == 177 || la.kind == 181) {
WhileOrUntil(
-#line 2207 "VBNET.ATG"
+#line 2314 "VBNET.ATG"
out conditionType);
Expr(
-#line 2207 "VBNET.ATG"
+#line 2314 "VBNET.ATG"
out expr);
}
-#line 2209 "VBNET.ATG"
+#line 2316 "VBNET.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, conditionType, ConditionPosition.End);
- } else SynErr(247);
+ } else SynErr(248);
break;
}
case 97: {
lexer.NextToken();
-#line 2214 "VBNET.ATG"
+#line 2321 "VBNET.ATG"
Expression group = null;
TypeReference typeReference;
string typeName;
@@ -5694,24 +5981,24 @@ out expr);
if (la.kind == 84) {
lexer.NextToken();
LoopControlVariable(
-#line 2221 "VBNET.ATG"
+#line 2328 "VBNET.ATG"
out typeReference, out typeName);
Expect(108);
Expr(
-#line 2222 "VBNET.ATG"
+#line 2329 "VBNET.ATG"
out group);
EndOfStmt();
Block(
-#line 2223 "VBNET.ATG"
+#line 2330 "VBNET.ATG"
out embeddedStatement);
Expect(127);
if (StartOf(19)) {
Expr(
-#line 2224 "VBNET.ATG"
+#line 2331 "VBNET.ATG"
out expr);
}
-#line 2226 "VBNET.ATG"
+#line 2333 "VBNET.ATG"
statement = new ForeachStatement(typeReference,
typeName,
group,
@@ -5723,84 +6010,84 @@ out expr);
} else if (StartOf(10)) {
-#line 2237 "VBNET.ATG"
+#line 2344 "VBNET.ATG"
Expression start = null;
Expression end = null;
Expression step = null;
Expression nextExpr = null;ArrayList nextExpressions = null;
LoopControlVariable(
-#line 2242 "VBNET.ATG"
+#line 2349 "VBNET.ATG"
out typeReference, out typeName);
Expect(11);
Expr(
-#line 2243 "VBNET.ATG"
+#line 2350 "VBNET.ATG"
out start);
Expect(172);
Expr(
-#line 2243 "VBNET.ATG"
+#line 2350 "VBNET.ATG"
out end);
if (la.kind == 162) {
lexer.NextToken();
Expr(
-#line 2243 "VBNET.ATG"
+#line 2350 "VBNET.ATG"
out step);
}
EndOfStmt();
Block(
-#line 2244 "VBNET.ATG"
+#line 2351 "VBNET.ATG"
out embeddedStatement);
Expect(127);
if (StartOf(19)) {
Expr(
-#line 2247 "VBNET.ATG"
+#line 2354 "VBNET.ATG"
out nextExpr);
-#line 2247 "VBNET.ATG"
+#line 2354 "VBNET.ATG"
nextExpressions = new ArrayList(); nextExpressions.Add(nextExpr);
while (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 2248 "VBNET.ATG"
+#line 2355 "VBNET.ATG"
out nextExpr);
-#line 2248 "VBNET.ATG"
+#line 2355 "VBNET.ATG"
nextExpressions.Add(nextExpr);
}
}
-#line 2251 "VBNET.ATG"
+#line 2358 "VBNET.ATG"
statement = new ForNextStatement(typeReference, typeName, start, end, step, embeddedStatement, nextExpressions);
- } else SynErr(248);
+ } else SynErr(249);
break;
}
case 91: {
lexer.NextToken();
Expr(
-#line 2255 "VBNET.ATG"
+#line 2362 "VBNET.ATG"
out expr);
-#line 2255 "VBNET.ATG"
+#line 2362 "VBNET.ATG"
statement = new ErrorStatement(expr);
break;
}
case 151: {
lexer.NextToken();
-#line 2257 "VBNET.ATG"
+#line 2364 "VBNET.ATG"
Expression redimclause = null; bool isPreserve = false;
if (la.kind == 144) {
lexer.NextToken();
-#line 2257 "VBNET.ATG"
+#line 2364 "VBNET.ATG"
isPreserve = true;
}
Expr(
-#line 2258 "VBNET.ATG"
+#line 2365 "VBNET.ATG"
out redimclause);
-#line 2260 "VBNET.ATG"
+#line 2367 "VBNET.ATG"
ReDimStatement reDimStatement = new ReDimStatement(isPreserve);
statement = reDimStatement;
reDimStatement.ReDimClauses.Add(redimclause as InvocationExpression);
@@ -5808,10 +6095,10 @@ out redimclause);
while (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 2264 "VBNET.ATG"
+#line 2371 "VBNET.ATG"
out redimclause);
-#line 2264 "VBNET.ATG"
+#line 2371 "VBNET.ATG"
reDimStatement.ReDimClauses.Add(redimclause as InvocationExpression);
}
break;
@@ -5819,10 +6106,10 @@ out redimclause);
case 90: {
lexer.NextToken();
Expr(
-#line 2267 "VBNET.ATG"
+#line 2374 "VBNET.ATG"
out expr);
-#line 2268 "VBNET.ATG"
+#line 2375 "VBNET.ATG"
ArrayList arrays = new ArrayList();
if (expr != null) { arrays.Add(expr);}
EraseStatement eraseStatement = new EraseStatement(arrays);
@@ -5831,53 +6118,53 @@ out expr);
while (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 2273 "VBNET.ATG"
+#line 2380 "VBNET.ATG"
out expr);
-#line 2273 "VBNET.ATG"
+#line 2380 "VBNET.ATG"
if (expr != null) { arrays.Add(expr); }
}
-#line 2274 "VBNET.ATG"
+#line 2381 "VBNET.ATG"
statement = eraseStatement;
break;
}
case 163: {
lexer.NextToken();
-#line 2276 "VBNET.ATG"
+#line 2383 "VBNET.ATG"
statement = new StopStatement();
break;
}
case 105: {
lexer.NextToken();
Expr(
-#line 2278 "VBNET.ATG"
+#line 2385 "VBNET.ATG"
out expr);
if (la.kind == 170) {
lexer.NextToken();
}
if (
-#line 2280 "VBNET.ATG"
+#line 2387 "VBNET.ATG"
IsEndStmtAhead()) {
Expect(87);
-#line 2280 "VBNET.ATG"
+#line 2387 "VBNET.ATG"
statement = new IfElseStatement(expr, new EndStatement());
} else if (la.kind == 1 || la.kind == 13) {
EndOfStmt();
Block(
-#line 2283 "VBNET.ATG"
+#line 2390 "VBNET.ATG"
out embeddedStatement);
-#line 2285 "VBNET.ATG"
+#line 2392 "VBNET.ATG"
IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement);
while (la.kind == 86 ||
-#line 2289 "VBNET.ATG"
+#line 2396 "VBNET.ATG"
IsElseIf()) {
if (
-#line 2289 "VBNET.ATG"
+#line 2396 "VBNET.ATG"
IsElseIf()) {
Expect(85);
Expect(105);
@@ -5885,20 +6172,20 @@ IsElseIf()) {
lexer.NextToken();
}
-#line 2292 "VBNET.ATG"
+#line 2399 "VBNET.ATG"
Expression condition = null; Statement block = null;
Expr(
-#line 2293 "VBNET.ATG"
+#line 2400 "VBNET.ATG"
out condition);
if (la.kind == 170) {
lexer.NextToken();
}
EndOfStmt();
Block(
-#line 2294 "VBNET.ATG"
+#line 2401 "VBNET.ATG"
out block);
-#line 2296 "VBNET.ATG"
+#line 2403 "VBNET.ATG"
ifStatement.ElseIfSections.Add(new ElseIfSection(condition, block));
}
@@ -5906,61 +6193,61 @@ out block);
lexer.NextToken();
EndOfStmt();
Block(
-#line 2301 "VBNET.ATG"
+#line 2408 "VBNET.ATG"
out embeddedStatement);
-#line 2303 "VBNET.ATG"
+#line 2410 "VBNET.ATG"
ifStatement.FalseStatement.Add(embeddedStatement);
}
Expect(87);
Expect(105);
-#line 2307 "VBNET.ATG"
+#line 2414 "VBNET.ATG"
statement = ifStatement;
} else if (StartOf(29)) {
EmbeddedStatement(
-#line 2310 "VBNET.ATG"
+#line 2417 "VBNET.ATG"
out embeddedStatement);
-#line 2312 "VBNET.ATG"
+#line 2419 "VBNET.ATG"
IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement);
while (la.kind == 13) {
lexer.NextToken();
EmbeddedStatement(
-#line 2314 "VBNET.ATG"
+#line 2421 "VBNET.ATG"
out embeddedStatement);
-#line 2314 "VBNET.ATG"
+#line 2421 "VBNET.ATG"
ifStatement.TrueStatement.Add(embeddedStatement);
}
if (la.kind == 85) {
lexer.NextToken();
if (StartOf(29)) {
EmbeddedStatement(
-#line 2316 "VBNET.ATG"
+#line 2423 "VBNET.ATG"
out embeddedStatement);
}
-#line 2318 "VBNET.ATG"
+#line 2425 "VBNET.ATG"
ifStatement.FalseStatement.Add(embeddedStatement);
while (la.kind == 13) {
lexer.NextToken();
EmbeddedStatement(
-#line 2321 "VBNET.ATG"
+#line 2428 "VBNET.ATG"
out embeddedStatement);
-#line 2322 "VBNET.ATG"
+#line 2429 "VBNET.ATG"
ifStatement.FalseStatement.Add(embeddedStatement);
}
}
-#line 2325 "VBNET.ATG"
+#line 2432 "VBNET.ATG"
statement = ifStatement;
- } else SynErr(249);
+ } else SynErr(250);
break;
}
case 155: {
@@ -5969,43 +6256,43 @@ out embeddedStatement);
lexer.NextToken();
}
Expr(
-#line 2328 "VBNET.ATG"
+#line 2435 "VBNET.ATG"
out expr);
EndOfStmt();
-#line 2329 "VBNET.ATG"
+#line 2436 "VBNET.ATG"
ArrayList selectSections = new ArrayList();
Statement block = null;
while (la.kind == 56) {
-#line 2333 "VBNET.ATG"
+#line 2440 "VBNET.ATG"
ArrayList caseClauses = null;
lexer.NextToken();
CaseClauses(
-#line 2334 "VBNET.ATG"
+#line 2441 "VBNET.ATG"
out caseClauses);
if (
-#line 2334 "VBNET.ATG"
+#line 2441 "VBNET.ATG"
IsNotStatementSeparator()) {
lexer.NextToken();
}
EndOfStmt();
-#line 2336 "VBNET.ATG"
+#line 2443 "VBNET.ATG"
SwitchSection selectSection = new SwitchSection(caseClauses);
Block(
-#line 2338 "VBNET.ATG"
+#line 2445 "VBNET.ATG"
out block);
-#line 2340 "VBNET.ATG"
+#line 2447 "VBNET.ATG"
selectSection.Children = block.Children;
selectSections.Add(selectSection);
}
-#line 2344 "VBNET.ATG"
+#line 2451 "VBNET.ATG"
statement = new SwitchStatement(expr, selectSections);
Expect(87);
Expect(155);
@@ -6013,43 +6300,43 @@ out block);
}
case 134: {
-#line 2346 "VBNET.ATG"
+#line 2453 "VBNET.ATG"
OnErrorStatement onErrorStatement = null;
OnErrorStatement(
-#line 2347 "VBNET.ATG"
+#line 2454 "VBNET.ATG"
out onErrorStatement);
-#line 2347 "VBNET.ATG"
+#line 2454 "VBNET.ATG"
statement = onErrorStatement;
break;
}
case 103: {
-#line 2348 "VBNET.ATG"
+#line 2455 "VBNET.ATG"
GotoStatement goToStatement = null;
GotoStatement(
-#line 2349 "VBNET.ATG"
+#line 2456 "VBNET.ATG"
out goToStatement);
-#line 2349 "VBNET.ATG"
+#line 2456 "VBNET.ATG"
statement = goToStatement;
break;
}
case 153: {
-#line 2350 "VBNET.ATG"
+#line 2457 "VBNET.ATG"
ResumeStatement resumeStatement = null;
ResumeStatement(
-#line 2351 "VBNET.ATG"
+#line 2458 "VBNET.ATG"
out resumeStatement);
-#line 2351 "VBNET.ATG"
+#line 2458 "VBNET.ATG"
statement = resumeStatement;
break;
}
case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 14: case 15: case 16: case 23: case 42: case 50: case 51: case 53: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 67: case 68: case 69: case 71: case 72: case 73: case 74: case 75: case 76: case 81: case 83: case 95: case 101: case 110: case 116: case 118: case 123: case 124: case 126: case 129: case 159: case 160: case 165: case 169: case 173: case 175: case 190: case 191: case 192: case 193: case 195: {
-#line 2354 "VBNET.ATG"
+#line 2461 "VBNET.ATG"
Expression val = null;
AssignmentOperatorType op;
@@ -6057,25 +6344,25 @@ out resumeStatement);
la.kind == Tokens.Not || la.kind == Tokens.Times;
UnaryExpr(
-#line 2360 "VBNET.ATG"
+#line 2467 "VBNET.ATG"
out expr);
if (StartOf(31)) {
AssignmentOperator(
-#line 2362 "VBNET.ATG"
+#line 2469 "VBNET.ATG"
out op);
Expr(
-#line 2362 "VBNET.ATG"
+#line 2469 "VBNET.ATG"
out val);
-#line 2362 "VBNET.ATG"
+#line 2469 "VBNET.ATG"
expr = new AssignmentExpression(expr, op, val);
} else if (la.kind == 1 || la.kind == 13 || la.kind == 85) {
-#line 2363 "VBNET.ATG"
+#line 2470 "VBNET.ATG"
if (mustBeAssignment) Error("error in assignment.");
- } else SynErr(250);
+ } else SynErr(251);
-#line 2366 "VBNET.ATG"
+#line 2473 "VBNET.ATG"
// a field reference expression that stands alone is a
// invocation expression without parantheses and arguments
if(expr is FieldReferenceExpression || expr is IdentifierExpression) {
@@ -6088,10 +6375,10 @@ out val);
case 55: {
lexer.NextToken();
UnaryExpr(
-#line 2373 "VBNET.ATG"
+#line 2480 "VBNET.ATG"
out expr);
-#line 2373 "VBNET.ATG"
+#line 2480 "VBNET.ATG"
statement = new StatementExpression(expr);
break;
}
@@ -6099,7 +6386,7 @@ out expr);
lexer.NextToken();
Identifier();
-#line 2375 "VBNET.ATG"
+#line 2482 "VBNET.ATG"
string resourcename = t.val, typeName;
Statement resourceAquisition = null, block = null;
@@ -6107,57 +6394,57 @@ out expr);
if (la.kind == 126) {
lexer.NextToken();
Qualident(
-#line 2379 "VBNET.ATG"
+#line 2486 "VBNET.ATG"
out typeName);
-#line 2379 "VBNET.ATG"
+#line 2486 "VBNET.ATG"
ArrayList initializer = null;
if (la.kind == 23) {
lexer.NextToken();
if (StartOf(18)) {
ArgumentList(
-#line 2379 "VBNET.ATG"
+#line 2486 "VBNET.ATG"
out initializer);
}
Expect(24);
}
-#line 2381 "VBNET.ATG"
+#line 2488 "VBNET.ATG"
resourceAquisition = new LocalVariableDeclaration(new VariableDeclaration(resourcename, new ArrayInitializerExpression(initializer), new TypeReference(typeName)));
} else if (StartOf(10)) {
Qualident(
-#line 2384 "VBNET.ATG"
+#line 2491 "VBNET.ATG"
out typeName);
Expect(11);
Expr(
-#line 2384 "VBNET.ATG"
+#line 2491 "VBNET.ATG"
out expr);
-#line 2386 "VBNET.ATG"
+#line 2493 "VBNET.ATG"
resourceAquisition = new LocalVariableDeclaration(new VariableDeclaration(resourcename, expr, new TypeReference(typeName)));
- } else SynErr(251);
+ } else SynErr(252);
Block(
-#line 2389 "VBNET.ATG"
+#line 2496 "VBNET.ATG"
out block);
Expect(87);
Expect(188);
-#line 2391 "VBNET.ATG"
+#line 2498 "VBNET.ATG"
statement = new UsingStatement(resourceAquisition, block);
break;
}
- default: SynErr(252); break;
+ default: SynErr(253); break;
}
}
void LocalDeclarationStatement(
-#line 2099 "VBNET.ATG"
+#line 2206 "VBNET.ATG"
out Statement statement) {
-#line 2101 "VBNET.ATG"
+#line 2208 "VBNET.ATG"
Modifiers m = new Modifiers();
LocalVariableDeclaration localVariableDeclaration;
bool dimfound = false;
@@ -6166,22 +6453,22 @@ out Statement statement) {
if (la.kind == 70) {
lexer.NextToken();
-#line 2107 "VBNET.ATG"
+#line 2214 "VBNET.ATG"
m.Add(Modifier.Const);
} else if (la.kind == 161) {
lexer.NextToken();
-#line 2108 "VBNET.ATG"
+#line 2215 "VBNET.ATG"
m.Add(Modifier.Static);
} else {
lexer.NextToken();
-#line 2109 "VBNET.ATG"
+#line 2216 "VBNET.ATG"
dimfound = true;
}
}
-#line 2112 "VBNET.ATG"
+#line 2219 "VBNET.ATG"
if(dimfound && (m.Modifier & Modifier.Const) != 0) {
Error("Dim is not allowed on constants.");
}
@@ -6194,137 +6481,137 @@ out Statement statement) {
localVariableDeclaration.StartLocation = t.Location;
VariableDeclarator(
-#line 2123 "VBNET.ATG"
+#line 2230 "VBNET.ATG"
localVariableDeclaration.Variables);
while (la.kind == 12) {
lexer.NextToken();
VariableDeclarator(
-#line 2124 "VBNET.ATG"
+#line 2231 "VBNET.ATG"
localVariableDeclaration.Variables);
}
-#line 2126 "VBNET.ATG"
+#line 2233 "VBNET.ATG"
statement = localVariableDeclaration;
}
void TryStatement(
-#line 2584 "VBNET.ATG"
+#line 2691 "VBNET.ATG"
out Statement tryStatement) {
-#line 2586 "VBNET.ATG"
+#line 2693 "VBNET.ATG"
Statement blockStmt = null, finallyStmt = null;ArrayList catchClauses = null;
Expect(174);
EndOfStmt();
Block(
-#line 2589 "VBNET.ATG"
+#line 2696 "VBNET.ATG"
out blockStmt);
if (la.kind == 57 || la.kind == 87 || la.kind == 96) {
CatchClauses(
-#line 2590 "VBNET.ATG"
+#line 2697 "VBNET.ATG"
out catchClauses);
}
if (la.kind == 96) {
lexer.NextToken();
EndOfStmt();
Block(
-#line 2591 "VBNET.ATG"
+#line 2698 "VBNET.ATG"
out finallyStmt);
}
Expect(87);
Expect(174);
-#line 2594 "VBNET.ATG"
+#line 2701 "VBNET.ATG"
tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt);
}
void WithStatement(
-#line 2562 "VBNET.ATG"
+#line 2669 "VBNET.ATG"
out Statement withStatement) {
-#line 2564 "VBNET.ATG"
+#line 2671 "VBNET.ATG"
Statement blockStmt = null;
Expression expr = null;
Expect(182);
-#line 2567 "VBNET.ATG"
+#line 2674 "VBNET.ATG"
Point start = t.Location;
Expr(
-#line 2568 "VBNET.ATG"
+#line 2675 "VBNET.ATG"
out expr);
EndOfStmt();
-#line 2570 "VBNET.ATG"
+#line 2677 "VBNET.ATG"
withStatement = new WithStatement(expr);
withStatement.StartLocation = start;
withStatements.Push(withStatement);
Block(
-#line 2574 "VBNET.ATG"
+#line 2681 "VBNET.ATG"
out blockStmt);
-#line 2576 "VBNET.ATG"
+#line 2683 "VBNET.ATG"
((WithStatement)withStatement).Body = (BlockStatement)blockStmt;
withStatements.Pop();
Expect(87);
Expect(182);
-#line 2580 "VBNET.ATG"
+#line 2687 "VBNET.ATG"
withStatement.EndLocation = t.Location;
}
void WhileOrUntil(
-#line 2555 "VBNET.ATG"
+#line 2662 "VBNET.ATG"
out ConditionType conditionType) {
-#line 2556 "VBNET.ATG"
+#line 2663 "VBNET.ATG"
conditionType = ConditionType.None;
if (la.kind == 181) {
lexer.NextToken();
-#line 2557 "VBNET.ATG"
+#line 2664 "VBNET.ATG"
conditionType = ConditionType.While;
} else if (la.kind == 177) {
lexer.NextToken();
-#line 2558 "VBNET.ATG"
+#line 2665 "VBNET.ATG"
conditionType = ConditionType.Until;
- } else SynErr(253);
+ } else SynErr(254);
}
void LoopControlVariable(
-#line 2396 "VBNET.ATG"
+#line 2503 "VBNET.ATG"
out TypeReference type, out string name) {
-#line 2397 "VBNET.ATG"
+#line 2504 "VBNET.ATG"
ArrayList arrayModifiers = null;
type = null;
Qualident(
-#line 2401 "VBNET.ATG"
+#line 2508 "VBNET.ATG"
out name);
if (
-#line 2402 "VBNET.ATG"
+#line 2509 "VBNET.ATG"
IsDims()) {
ArrayTypeModifiers(
-#line 2402 "VBNET.ATG"
+#line 2509 "VBNET.ATG"
out arrayModifiers);
}
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 2403 "VBNET.ATG"
+#line 2510 "VBNET.ATG"
out type);
-#line 2403 "VBNET.ATG"
+#line 2510 "VBNET.ATG"
if (name.IndexOf('.') > 0) { Error("No type def for 'for each' member indexer allowed."); }
}
-#line 2405 "VBNET.ATG"
+#line 2512 "VBNET.ATG"
if (type != null) {
if(type.RankSpecifier != null && arrayModifiers != null) {
Error("array rank only allowed one time");
@@ -6342,48 +6629,48 @@ out type);
}
void CaseClauses(
-#line 2515 "VBNET.ATG"
+#line 2622 "VBNET.ATG"
out ArrayList caseClauses) {
-#line 2517 "VBNET.ATG"
+#line 2624 "VBNET.ATG"
caseClauses = new ArrayList();
CaseLabel caseClause = null;
CaseClause(
-#line 2520 "VBNET.ATG"
+#line 2627 "VBNET.ATG"
out caseClause);
-#line 2520 "VBNET.ATG"
+#line 2627 "VBNET.ATG"
caseClauses.Add(caseClause);
while (la.kind == 12) {
lexer.NextToken();
CaseClause(
-#line 2521 "VBNET.ATG"
+#line 2628 "VBNET.ATG"
out caseClause);
-#line 2521 "VBNET.ATG"
+#line 2628 "VBNET.ATG"
caseClauses.Add(caseClause);
}
}
void OnErrorStatement(
-#line 2422 "VBNET.ATG"
+#line 2529 "VBNET.ATG"
out OnErrorStatement stmt) {
-#line 2424 "VBNET.ATG"
+#line 2531 "VBNET.ATG"
stmt = null;
GotoStatement goToStatement = null;
Expect(134);
Expect(91);
if (
-#line 2430 "VBNET.ATG"
+#line 2537 "VBNET.ATG"
IsNegativeLabelName()) {
Expect(103);
Expect(15);
Expect(5);
-#line 2432 "VBNET.ATG"
+#line 2539 "VBNET.ATG"
long intLabel = Int64.Parse(t.val);
if(intLabel != 1) {
Error("invalid label in on error statement.");
@@ -6392,10 +6679,10 @@ IsNegativeLabelName()) {
} else if (la.kind == 103) {
GotoStatement(
-#line 2438 "VBNET.ATG"
+#line 2545 "VBNET.ATG"
out goToStatement);
-#line 2440 "VBNET.ATG"
+#line 2547 "VBNET.ATG"
string val = goToStatement.Label;
// if value is numeric, make sure that is 0
@@ -6412,63 +6699,63 @@ out goToStatement);
lexer.NextToken();
Expect(127);
-#line 2454 "VBNET.ATG"
+#line 2561 "VBNET.ATG"
stmt = new OnErrorStatement(new ResumeStatement(true));
- } else SynErr(254);
+ } else SynErr(255);
}
void GotoStatement(
-#line 2460 "VBNET.ATG"
+#line 2567 "VBNET.ATG"
out ICSharpCode.NRefactory.Parser.AST.GotoStatement goToStatement) {
-#line 2462 "VBNET.ATG"
+#line 2569 "VBNET.ATG"
string label = String.Empty;
Expect(103);
LabelName(
-#line 2465 "VBNET.ATG"
+#line 2572 "VBNET.ATG"
out label);
-#line 2467 "VBNET.ATG"
+#line 2574 "VBNET.ATG"
goToStatement = new ICSharpCode.NRefactory.Parser.AST.GotoStatement(label);
}
void ResumeStatement(
-#line 2504 "VBNET.ATG"
+#line 2611 "VBNET.ATG"
out ResumeStatement resumeStatement) {
-#line 2506 "VBNET.ATG"
+#line 2613 "VBNET.ATG"
resumeStatement = null;
string label = String.Empty;
if (
-#line 2509 "VBNET.ATG"
+#line 2616 "VBNET.ATG"
IsResumeNext()) {
Expect(153);
Expect(127);
-#line 2510 "VBNET.ATG"
+#line 2617 "VBNET.ATG"
resumeStatement = new ResumeStatement(true);
} else if (la.kind == 153) {
lexer.NextToken();
if (StartOf(32)) {
LabelName(
-#line 2511 "VBNET.ATG"
+#line 2618 "VBNET.ATG"
out label);
}
-#line 2511 "VBNET.ATG"
+#line 2618 "VBNET.ATG"
resumeStatement = new ResumeStatement(label);
- } else SynErr(255);
+ } else SynErr(256);
}
void CaseClause(
-#line 2525 "VBNET.ATG"
+#line 2632 "VBNET.ATG"
out CaseLabel caseClause) {
-#line 2527 "VBNET.ATG"
+#line 2634 "VBNET.ATG"
Expression expr = null;
Expression sexpr = null;
BinaryOperatorType op = BinaryOperatorType.None;
@@ -6477,7 +6764,7 @@ out CaseLabel caseClause) {
if (la.kind == 85) {
lexer.NextToken();
-#line 2533 "VBNET.ATG"
+#line 2640 "VBNET.ATG"
caseClause = new CaseLabel();
} else if (StartOf(33)) {
if (la.kind == 112) {
@@ -6487,76 +6774,76 @@ out CaseLabel caseClause) {
case 26: {
lexer.NextToken();
-#line 2537 "VBNET.ATG"
+#line 2644 "VBNET.ATG"
op = BinaryOperatorType.LessThan;
break;
}
case 25: {
lexer.NextToken();
-#line 2538 "VBNET.ATG"
+#line 2645 "VBNET.ATG"
op = BinaryOperatorType.GreaterThan;
break;
}
case 29: {
lexer.NextToken();
-#line 2539 "VBNET.ATG"
+#line 2646 "VBNET.ATG"
op = BinaryOperatorType.LessThanOrEqual;
break;
}
case 28: {
lexer.NextToken();
-#line 2540 "VBNET.ATG"
+#line 2647 "VBNET.ATG"
op = BinaryOperatorType.GreaterThanOrEqual;
break;
}
case 11: {
lexer.NextToken();
-#line 2541 "VBNET.ATG"
+#line 2648 "VBNET.ATG"
op = BinaryOperatorType.Equality;
break;
}
case 27: {
lexer.NextToken();
-#line 2542 "VBNET.ATG"
+#line 2649 "VBNET.ATG"
op = BinaryOperatorType.InEquality;
break;
}
- default: SynErr(256); break;
+ default: SynErr(257); break;
}
Expr(
-#line 2544 "VBNET.ATG"
+#line 2651 "VBNET.ATG"
out expr);
-#line 2546 "VBNET.ATG"
+#line 2653 "VBNET.ATG"
caseClause = new CaseLabel(op, expr);
} else if (StartOf(19)) {
Expr(
-#line 2548 "VBNET.ATG"
+#line 2655 "VBNET.ATG"
out expr);
if (la.kind == 172) {
lexer.NextToken();
Expr(
-#line 2548 "VBNET.ATG"
+#line 2655 "VBNET.ATG"
out sexpr);
}
-#line 2550 "VBNET.ATG"
+#line 2657 "VBNET.ATG"
caseClause = new CaseLabel(expr, sexpr);
- } else SynErr(257);
+ } else SynErr(258);
}
void CatchClauses(
-#line 2599 "VBNET.ATG"
+#line 2706 "VBNET.ATG"
out ArrayList catchClauses) {
-#line 2601 "VBNET.ATG"
+#line 2708 "VBNET.ATG"
catchClauses = new ArrayList();
TypeReference type = null;
Statement blockStmt = null;
@@ -6568,27 +6855,27 @@ out ArrayList catchClauses) {
if (StartOf(10)) {
Identifier();
-#line 2609 "VBNET.ATG"
+#line 2716 "VBNET.ATG"
name = t.val;
if (la.kind == 47) {
lexer.NextToken();
TypeName(
-#line 2609 "VBNET.ATG"
+#line 2716 "VBNET.ATG"
out type);
}
}
if (la.kind == 180) {
lexer.NextToken();
Expr(
-#line 2610 "VBNET.ATG"
+#line 2717 "VBNET.ATG"
out expr);
}
EndOfStmt();
Block(
-#line 2612 "VBNET.ATG"
+#line 2719 "VBNET.ATG"
out blockStmt);
-#line 2613 "VBNET.ATG"
+#line 2720 "VBNET.ATG"
catchClauses.Add(new CatchClause(type, name, blockStmt, expr));
}
}
@@ -6871,35 +7158,36 @@ out blockStmt);
case 226: s = "invalid VariableDeclarator"; break;
case 227: s = "invalid AccessorDecls"; break;
case 228: s = "invalid EventAccessorDeclaration"; break;
- case 229: s = "invalid VariableInitializer"; break;
- case 230: s = "invalid EventMemberSpecifier"; break;
+ case 229: s = "invalid OverloadableOperator"; break;
+ case 230: s = "invalid VariableInitializer"; break;
case 231: s = "invalid EventMemberSpecifier"; break;
- case 232: s = "invalid SimpleExpr"; break;
+ case 232: s = "invalid EventMemberSpecifier"; break;
case 233: s = "invalid SimpleExpr"; break;
case 234: s = "invalid SimpleExpr"; break;
- case 235: s = "invalid AssignmentOperator"; break;
- case 236: s = "invalid IdentifierOrKeyword"; break;
- case 237: s = "invalid CastTarget"; break;
- case 238: s = "invalid Argument"; break;
- case 239: s = "invalid RelationalExpr"; break;
+ case 235: s = "invalid SimpleExpr"; break;
+ case 236: s = "invalid AssignmentOperator"; break;
+ case 237: s = "invalid IdentifierOrKeyword"; break;
+ case 238: s = "invalid CastTarget"; break;
+ case 239: s = "invalid Argument"; break;
case 240: s = "invalid RelationalExpr"; break;
- case 241: s = "invalid NonArrayTypeName"; break;
- case 242: s = "invalid AttributeArguments"; break;
- case 243: s = "invalid ParameterModifier"; break;
- case 244: s = "invalid Statement"; break;
- case 245: s = "invalid LabelName"; break;
- case 246: s = "invalid EmbeddedStatement"; break;
+ case 241: s = "invalid RelationalExpr"; break;
+ case 242: s = "invalid NonArrayTypeName"; break;
+ case 243: s = "invalid AttributeArguments"; break;
+ case 244: s = "invalid ParameterModifier"; break;
+ case 245: s = "invalid Statement"; break;
+ case 246: s = "invalid LabelName"; break;
case 247: s = "invalid EmbeddedStatement"; break;
case 248: s = "invalid EmbeddedStatement"; break;
case 249: s = "invalid EmbeddedStatement"; break;
case 250: s = "invalid EmbeddedStatement"; break;
case 251: s = "invalid EmbeddedStatement"; break;
case 252: s = "invalid EmbeddedStatement"; break;
- case 253: s = "invalid WhileOrUntil"; break;
- case 254: s = "invalid OnErrorStatement"; break;
- case 255: s = "invalid ResumeStatement"; break;
- case 256: s = "invalid CaseClause"; break;
+ case 253: s = "invalid EmbeddedStatement"; break;
+ case 254: s = "invalid WhileOrUntil"; break;
+ case 255: s = "invalid OnErrorStatement"; break;
+ case 256: s = "invalid ResumeStatement"; break;
case 257: s = "invalid CaseClause"; break;
+ case 258: s = "invalid CaseClause"; break;
default: s = "error " + errorNumber; break;
}
@@ -6918,15 +7206,15 @@ out blockStmt);
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,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,T,x,x, x,x,x,x, x,x,T,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,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,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,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,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, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, 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,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,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,T,T, x,T,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,T, 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,T,x, x,x,x,x, T,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,T, T,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,T,T, T,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,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, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,T,T,x, x,x,x,x, x,T,T,T, T,x,x,x, x,x,x,x, x,T,x,x, T,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, T,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,T,T, x,T,x,x, x,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,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,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,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,T,x, x,x,x,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,T, T,x,T,x, x,T,x,T, T,x,T,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,T, T,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,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, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,T,T,x, x,x,x,x, x,T,T,T, T,x,x,x, x,x,x,x, x,T,x,x, T,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, T,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,T,T, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,T, x,x,x,x, x,x,x,x, x,T,T,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,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,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,T,x, x,x,x,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,T, T,x,T,x, x,T,x,T, T,x,T,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,T, T,x,x,x, x,x,x,x, x,x,x,x, x,T,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,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, 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,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,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,x,x, x,x,x,x, x,x,T,T, T,x,x,x, x,x,x,x, x,T,x,x, T,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, T,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,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,x,x,x, x,x,x,T, 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,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,T,x, x,x,x,x, x,x,x,x, x,x,T,T, T,x,x,x, x,x,x,x, x,T,x,x, T,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, T,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,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,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,T,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,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,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,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,T,T,T, T,T,T,T, T,T,T,x, x,T,T,T, 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,T,T,x, x,x,x,x, x,x,T,T, x,T,x,T, x,x,T,T, T,T,T,T, T,T,x,T, T,T,T,T, T,T,T,T, T,x,x,x, T,T,T,T, x,x,x,T, x,x,T,T, x,T,x,T, x,T,x,x, x,T,x,T, x,T,x,x, x,x,T,x, x,x,x,x, T,x,T,x, x,x,x,T, T,x,T,x, x,T,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,T, T,T,T,T, x,x,x,T, T,T,x,T, x,T,x,x, T,T,x,T, x,T,T,T, x,x,x,x, x,T,T,x, x,x,T,x, T,x,T,T, T,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,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,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, 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,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, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,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,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,T,x, T,x,x,x, x,x,x,x, x,x,x,x, T,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,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,T, 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,x,x, x,x,x,x, x,x,x},
+ {x,x,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,T,x, T,x,x,x, x,x,x,x, x,x,x,x, T,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,T,T,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,T, T,x,T,x, x,T,T,T, T,x,T,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,T, 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,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, x,x,x,x, x,x,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,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,T, 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,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,T, x,x,x},
{x,T,T,T, T,T,T,T, T,T,T,x, x,T,T,T, 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,T,T,x, x,x,x,x, x,x,T,T, x,T,x,T, x,x,T,T, T,T,T,T, T,T,x,T, T,T,T,T, T,T,T,T, T,x,x,x, T,T,T,T, x,x,x,x, x,x,T,T, x,T,x,T, x,T,x,x, x,T,x,T, x,T,x,x, x,x,T,x, x,x,x,x, T,x,T,x, x,x,x,T, T,x,T,x, x,T,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,T, T,T,T,T, x,x,x,T, T,T,x,T, x,T,x,x, T,T,x,T, x,T,T,T, x,x,x,x, x,T,T,x, x,x,T,x, T,x,T,T, T,T,x,T, x,x,x,x, x,x,x},
{x,T,x,x, x,x,x,x, x,x,x,T, 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,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
index 05d2dab60f..a7927e9d38 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
@@ -514,7 +514,8 @@ ImportClause
NamespaceMemberDecl
(.
Modifiers m = new Modifiers();
- AttributeSection section;List attributes = new List();
+ AttributeSection section;
+ List attributes = new List();
string qualident;
.) =
"Namespace"
@@ -635,6 +636,7 @@ NonModuleDeclaration attributes>
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
newType.StartLocation = t.Location;
+ System.Console.WriteLine("XXX " + t.Location.ToString());
newType.Type = Types.Struct;
.)
Identifier (. newType.Name = t.val; .)
@@ -1194,6 +1196,7 @@ StructureMemberDecl attributes>
|
"Custom" (. Point startPos = t.Location; .) "Event"
(.
+ m.Check(Modifier.VBCustomEvents);
EventAccessorDeclaration eventAccessorDeclaration;
EventAccessorDeclaration addHandlerAccessorDeclaration = null;
EventAccessorDeclaration removeHandlerAccessorDeclaration = null;
@@ -1240,9 +1243,113 @@ StructureMemberDecl attributes>
CustomEventDeclaration decl = new CustomEventDeclaration(m.Modifier, attributes, customEventName, addHandlerAccessorDeclaration, removeHandlerAccessorDeclaration, raiseEventAccessorDeclaration, implementsClause);
decl.StartLocation = startPos;
- decl.StartLocation = t.EndLocation;
+ decl.EndLocation = t.EndLocation;
compilationUnit.AddChild(decl);
.)
+ | /* UnaryOperatorDeclaration */
+ "Operator"
+ (.
+ m.Check(Modifier.VBOperators);
+ Point startPos = t.Location;
+ TypeReference returnType = NullTypeReference.Instance;
+ TypeReference operandType = NullTypeReference.Instance;
+ string operandName;
+ OverloadableOperatorType operatorType;
+ AttributeSection section;
+ List parameters = new List();
+ List returnTypeAttributes = new List();
+ .)
+ OverloadableOperator
+ "(" [ "ByVal" ] Identifier (. operandName = t.val; .)
+ [ "As" TypeName ]
+ (. parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParamModifier.In)); .)
+
+ {
+ ","
+ [ "ByVal" ] Identifier (. operandName = t.val; .)
+ [ "As" TypeName ]
+ (. parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParamModifier.In)); .)
+ }
+ ")"
+ [ "As" { AttributeSection (. returnTypeAttributes.Add(section); .) } TypeName EOL ]
+ Block "End" "Operator" EOL
+ (.
+ OperatorDeclaration operatorDeclaration = new OperatorDeclaration(m.Modifier,
+ attributes,
+ parameters,
+ returnType,
+ operatorType
+ );
+ operatorDeclaration.ConvertToType = returnType;
+ operatorDeclaration.ReturnTypeAttributes = returnTypeAttributes;
+ operatorDeclaration.Body = (BlockStatement)stmt;
+ operatorDeclaration.StartLocation = startPos;
+ operatorDeclaration.EndLocation = t.EndLocation;
+ compilationUnit.AddChild(operatorDeclaration);
+ .)
+ .
+
+OverloadableOperator
+ (. operatorType = OverloadableOperatorType.None; .)
+ =
+ "+" (. operatorType = OverloadableOperatorType.Add; .)
+ |
+ "-" (. operatorType = OverloadableOperatorType.Subtract; .)
+ |
+ "*" (. operatorType = OverloadableOperatorType.Multiply; .)
+ |
+ "/" (. operatorType = OverloadableOperatorType.Divide; .)
+ |
+ "\\" (. operatorType = OverloadableOperatorType.DivideInteger; .)
+ |
+ "&" (. operatorType = OverloadableOperatorType.Concat; .)
+ |
+ "Like" (. operatorType = OverloadableOperatorType.Like; .)
+ |
+ "Mod" (. operatorType = OverloadableOperatorType.Modulus; .)
+ |
+ "And" (. operatorType = OverloadableOperatorType.BitwiseAnd; .)
+ |
+ "Or" (. operatorType = OverloadableOperatorType.BitwiseOr; .)
+ |
+ "Xor" (. operatorType = OverloadableOperatorType.ExclusiveOr; .)
+ |
+ "^" (. operatorType = OverloadableOperatorType.Power; .)
+ |
+ "<<" (. operatorType = OverloadableOperatorType.ShiftLeft; .)
+ |
+ ">>" (. operatorType = OverloadableOperatorType.ShiftRight; .)
+ |
+ "=" (. operatorType = OverloadableOperatorType.Equality; .)
+ |
+ "<>" (. operatorType = OverloadableOperatorType.InEquality; .)
+ |
+ "<" (. operatorType = OverloadableOperatorType.LessThan; .)
+ |
+ "<=" (. operatorType = OverloadableOperatorType.LessThanOrEqual; .)
+ |
+ ">" (. operatorType = OverloadableOperatorType.GreaterThan; .)
+ |
+ ">=" (. operatorType = OverloadableOperatorType.GreaterThanOrEqual; .)
+ |
+ "CType" (. operatorType = OverloadableOperatorType.CType; .)
+ |
+ Identifier
+ (.
+ string opName = t.val;
+ switch(opName.ToLower())
+ {
+ case "istrue":
+ operatorType = OverloadableOperatorType.IsTrue;
+ break;
+ case "isfalse":
+ operatorType = OverloadableOperatorType.IsFalse;
+ break;
+ default:
+ Error("Invalid operator. Possible operators are '+', '-', 'Not', 'IsTrue', 'IsFalse'.");
+ break;
+ }
+ .)
.
EventAccessorDeclaration
@@ -2854,6 +2961,8 @@ MemberModifier =
| "WriteOnly" (. /* m.Add(Modifier.WriteOnly); */ .)
| "WithEvents" (.m.Add(Modifier.WithEvents);.)
| "Dim" (.m.Add(Modifier.Dim);.)
+ | "Widening" (.m.Add(Modifier.Widening);.)
+ | "Narrowing" (.m.Add(Modifier.Narrowing);.)
.
END VBNET.
diff --git a/src/Libraries/NRefactory/Test/Parser/TypeLevel/OperatorDeclarationTests.cs b/src/Libraries/NRefactory/Test/Parser/TypeLevel/OperatorDeclarationTests.cs
index 4e67418e66..7cc4842c88 100644
--- a/src/Libraries/NRefactory/Test/Parser/TypeLevel/OperatorDeclarationTests.cs
+++ b/src/Libraries/NRefactory/Test/Parser/TypeLevel/OperatorDeclarationTests.cs
@@ -51,7 +51,20 @@ namespace ICSharpCode.NRefactory.Tests.AST
#endregion
#region VB.NET
- // No VB.NET representation
+
+ [Test]
+ public void VBNetImplictOperatorDeclarationTest()
+ {
+ string programm = @"Public Shared Operator + (ByVal v As Complex) As Complex
+ Return v
+ End Operator";
+
+ OperatorDeclaration od = (OperatorDeclaration)ParseUtilVBNet.ParseTypeMember(programm, typeof(OperatorDeclaration));
+ Assert.IsFalse(od.IsConversionOperator);
+ Assert.AreEqual(1, od.Parameters.Count);
+ Assert.AreEqual(ConversionType.None, od.ConversionType);
+ Assert.AreEqual("Complex", od.ConvertToType.Type);
+ }
#endregion
}
}