📄 parser.cs
字号:
} else SynErr(219);
}
void EnumBody(
#line 576 "VBNET.ATG"
TypeDeclaration newType) {
#line 577 "VBNET.ATG"
FieldDeclaration f;
while (StartOf(11)) {
EnumMemberDecl(
#line 579 "VBNET.ATG"
out f);
#line 579 "VBNET.ATG"
compilationUnit.AddChild(f);
}
Expect(88);
Expect(90);
#line 581 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void InterfaceBase(
#line 1477 "VBNET.ATG"
out List<TypeReference> bases) {
#line 1479 "VBNET.ATG"
TypeReference type;
bases = new List<TypeReference>();
Expect(110);
TypeName(
#line 1483 "VBNET.ATG"
out type);
#line 1483 "VBNET.ATG"
bases.Add(type);
while (la.kind == 12) {
lexer.NextToken();
TypeName(
#line 1486 "VBNET.ATG"
out type);
#line 1486 "VBNET.ATG"
bases.Add(type);
}
Expect(1);
}
void InterfaceBody(
#line 585 "VBNET.ATG"
TypeDeclaration newType) {
while (StartOf(12)) {
InterfaceMemberDecl();
}
Expect(88);
Expect(112);
#line 587 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
}
void FormalParameterList(
#line 2129 "VBNET.ATG"
List<ParameterDeclarationExpression> parameter) {
#line 2131 "VBNET.ATG"
ParameterDeclarationExpression p;
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
while (la.kind == 27) {
AttributeSection(
#line 2135 "VBNET.ATG"
out section);
#line 2135 "VBNET.ATG"
attributes.Add(section);
}
FormalParameter(
#line 2137 "VBNET.ATG"
out p);
#line 2139 "VBNET.ATG"
bool paramsFound = false;
p.Attributes = attributes;
parameter.Add(p);
while (la.kind == 12) {
lexer.NextToken();
#line 2144 "VBNET.ATG"
if (paramsFound) Error("params array must be at end of parameter list");
while (la.kind == 27) {
AttributeSection(
#line 2145 "VBNET.ATG"
out section);
#line 2145 "VBNET.ATG"
attributes.Add(section);
}
FormalParameter(
#line 2147 "VBNET.ATG"
out p);
#line 2147 "VBNET.ATG"
p.Attributes = attributes; parameter.Add(p);
}
}
void MemberModifier(
#line 2852 "VBNET.ATG"
ModifierList m) {
switch (la.kind) {
case 122: {
lexer.NextToken();
#line 2853 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location);
break;
}
case 79: {
lexer.NextToken();
#line 2854 "VBNET.ATG"
m.Add(Modifiers.Default, t.Location);
break;
}
case 99: {
lexer.NextToken();
#line 2855 "VBNET.ATG"
m.Add(Modifiers.Internal, t.Location);
break;
}
case 157: {
lexer.NextToken();
#line 2856 "VBNET.ATG"
m.Add(Modifiers.New, t.Location);
break;
}
case 142: {
lexer.NextToken();
#line 2857 "VBNET.ATG"
m.Add(Modifiers.Override, t.Location);
break;
}
case 123: {
lexer.NextToken();
#line 2858 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location);
break;
}
case 145: {
lexer.NextToken();
#line 2859 "VBNET.ATG"
m.Add(Modifiers.Private, t.Location);
break;
}
case 147: {
lexer.NextToken();
#line 2860 "VBNET.ATG"
m.Add(Modifiers.Protected, t.Location);
break;
}
case 148: {
lexer.NextToken();
#line 2861 "VBNET.ATG"
m.Add(Modifiers.Public, t.Location);
break;
}
case 131: {
lexer.NextToken();
#line 2862 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location);
break;
}
case 132: {
lexer.NextToken();
#line 2863 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location);
break;
}
case 158: {
lexer.NextToken();
#line 2864 "VBNET.ATG"
m.Add(Modifiers.Static, t.Location);
break;
}
case 141: {
lexer.NextToken();
#line 2865 "VBNET.ATG"
m.Add(Modifiers.Virtual, t.Location);
break;
}
case 140: {
lexer.NextToken();
#line 2866 "VBNET.ATG"
m.Add(Modifiers.Overloads, t.Location);
break;
}
case 150: {
lexer.NextToken();
#line 2867 "VBNET.ATG"
m.Add(Modifiers.ReadOnly, t.Location);
break;
}
case 184: {
lexer.NextToken();
#line 2868 "VBNET.ATG"
m.Add(Modifiers.WriteOnly, t.Location);
break;
}
case 183: {
lexer.NextToken();
#line 2869 "VBNET.ATG"
m.Add(Modifiers.WithEvents, t.Location);
break;
}
case 81: {
lexer.NextToken();
#line 2870 "VBNET.ATG"
m.Add(Modifiers.Dim, t.Location);
break;
}
default: SynErr(220); break;
}
}
void ClassMemberDecl(
#line 712 "VBNET.ATG"
ModifierList m, List<AttributeSection> attributes) {
StructureMemberDecl(
#line 713 "VBNET.ATG"
m, attributes);
}
void StructureMemberDecl(
#line 726 "VBNET.ATG"
ModifierList m, List<AttributeSection> attributes) {
#line 728 "VBNET.ATG"
TypeReference type = null;
List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
Statement stmt = null;
List<VariableDeclaration> variableDeclarators = new List<VariableDeclaration>();
List<TemplateDefinition> templates = new List<TemplateDefinition>();
switch (la.kind) {
case 67: case 80: case 90: case 112: case 121: case 166: {
NonModuleDeclaration(
#line 735 "VBNET.ATG"
m, attributes);
break;
}
case 167: {
lexer.NextToken();
#line 739 "VBNET.ATG"
Location startPos = t.Location;
if (StartOf(13)) {
#line 743 "VBNET.ATG"
string name = String.Empty;
MethodDeclaration methodDeclaration; List<string> handlesClause = null;
List<InterfaceImplementation> implementsClause = null;
Identifier();
#line 749 "VBNET.ATG"
name = t.val;
m.Check(Modifiers.VBMethods);
TypeParameterList(
#line 752 "VBNET.ATG"
templates);
if (la.kind == 24) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
#line 753 "VBNET.ATG"
p);
}
Expect(25);
}
if (la.kind == 105 || la.kind == 107) {
if (la.kind == 107) {
ImplementsClause(
#line 756 "VBNET.ATG"
out implementsClause);
} else {
HandlesClause(
#line 758 "VBNET.ATG"
out handlesClause);
}
}
#line 761 "VBNET.ATG"
Location endLocation = t.EndLocation;
Expect(1);
if (
#line 765 "VBNET.ATG"
IsMustOverride(m)) {
#line 767 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = endLocation;
methodDeclaration.TypeReference = new TypeReference("", "System.Void");
methodDeclaration.Templates = templates;
methodDeclaration.HandlesClause = handlesClause;
methodDeclaration.InterfaceImplementations = implementsClause;
compilationUnit.AddChild(methodDeclaration);
} else if (StartOf(14)) {
#line 780 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, null, p, attributes);
methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = endLocation;
methodDeclaration.TypeReference = new TypeReference("", "System.Void");
methodDeclaration.Templates = templates;
methodDeclaration.HandlesClause = handlesClause;
methodDeclaration.InterfaceImplementations = implementsClause;
compilationUnit.AddChild(methodDeclaration);
#line 792 "VBNET.ATG"
if (ParseMethodBodies) {
Block(
#line 793 "VBNET.ATG"
out stmt);
Expect(88);
Expect(167);
#line 795 "VBNET.ATG"
} else {
// don't parse method body
lexer.SkipCurrentBlock(Tokens.Sub); stmt = new BlockStatement();
}
#line 801 "VBNET.ATG"
methodDeclaration.Body = (BlockStatement)stmt;
#line 802 "VBNET.ATG"
methodDeclaration.Body.EndLocation = t.EndLocation;
Expect(1);
} else SynErr(221);
} else if (la.kind == 127) {
lexer.NextToken();
if (la.kind == 24) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
#line 805 "VBNET.ATG"
p);
}
Expect(25);
}
#line 806 "VBNET.ATG"
m.Check(Modifiers.Constructors);
#line 807 "VBNET.ATG"
Location constructorEndLocation = t.EndLocation;
Expect(1);
#line 810 "VBNET.ATG"
if (ParseMethodBodies) {
Block(
#line 811 "VBNET.ATG"
out stmt);
Expect(88);
Expect(167);
#line 813 "VBNET.ATG"
} else {
// don't parse method body
lexer.SkipCurrentBlock(Tokens.Sub); stmt = new BlockStatement();
}
#line 819 "VBNET.ATG"
Location endLocation = t.EndLocation;
Expect(1);
#line 821 "VBNET.ATG"
ConstructorDeclaration cd = new ConstructorDeclaration("New", m.Modifier, p, attributes);
cd.StartLocation = m.GetDeclarationLocation(startPos);
cd.EndLocation = constructorEndLocation;
cd.Body = (BlockStatement)stmt;
cd.Body.EndLocation = endLocation;
compilationUnit.AddChild(cd);
} else SynErr(222);
break;
}
case 100: {
lexer.NextToken();
#line 833 "VBNET.ATG"
m.Check(Modifiers.VBMethods);
string name = String.Empty;
Location startPos = t.Location;
MethodDeclaration methodDeclaration;List<string> handlesClause = null;
List<InterfaceImplementation> implementsClause = null;
AttributeSection returnTypeAttributeSection = null;
Identifier();
#line 840 "VBNET.ATG"
name = t.val;
TypeParameterList(
#line 841 "VBNET.ATG"
templates);
if (la.kind == 24) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
#line 842 "VBNET.ATG"
p);
}
Expect(25);
}
if (la.kind == 48) {
lexer.NextToken();
while (la.kind == 27) {
AttributeSection(
#line 843 "VBNET.ATG"
out returnTypeAttributeSection);
}
TypeName(
#line 843 "VBNET.ATG"
out type);
}
#line 845 "VBNET.ATG"
if(type == null) {
type = new TypeReference("System.Object");
}
if (la.kind == 105 || la.kind == 107) {
if (la.kind == 107) {
ImplementsClause(
#line 851 "VBNET.ATG"
out implementsClause);
} else {
HandlesClause(
#line 853 "VBNET.ATG"
out handlesClause);
}
}
Expect(1);
if (
#line 859 "VBNET.ATG"
IsMustOverride(m)) {
#line 861 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.HandlesClause = handlesClause;
methodDeclaration.Templates = templates;
methodDeclaration.InterfaceImplementations = implementsClause;
if (returnTypeAttributeSection != null) {
returnTypeAttributeSection.AttributeTarget = "return";
methodDeclaration.Attributes.Add(returnTypeAttributeSection);
}
compilationUnit.AddChild(methodDeclaration);
} else if (StartOf(14)) {
#line 876 "VBNET.ATG"
methodDeclaration = new MethodDeclaration(name, m.Modifier, type, p, attributes);
methodDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
methodDeclaration.EndLocation = t.EndLocation;
methodDeclaration.Templates = templates;
methodDeclaration.HandlesClause = handlesClause;
methodDeclaration.InterfaceImplementations = implementsClause;
if (returnTypeAttributeSection != null) {
returnTypeAttributeSection.AttributeTarget = "return";
methodDeclaration.Attributes.Add(returnTypeAttributeSection);
}
compilationUnit.AddChild(methodDeclaration);
if (ParseMethodBodies) {
Block(
#line 891 "VBNET.ATG"
out stmt);
Expect(88);
Expect(100);
#line 893 "VBNET.ATG"
} else {
// don't parse method body
lexer.SkipCurrentBlock(Tokens.Function); stmt = new BlockStatement();
}
methodDeclaration.Body = (BlockStatement)stmt;
methodDeclaration.Body.StartLocation = methodDeclaration.EndLocation;
methodDeclaration.Body.EndLocation = t.EndLocation;
Expect(1);
} else SynErr(223);
break;
}
case 78: {
lexer.NextToken();
#line 907 "VBNET.ATG"
m.Check(Modifiers.VBExternalMethods);
Location startPos = t.Location;
CharsetModifier charsetModifer = CharsetModifier.None;
string library = String.Empty;
string alias = null;
string name = String.Empty;
if (StartOf(15)) {
Charset(
#line 914 "VBNET.ATG"
out charsetModifer);
}
if (la.kind == 167) {
lexer.NextToken();
Identifier();
#line 917 "VBNET.ATG"
name = t.val;
Expect(115);
Expect(3);
#line 918 "VBNET.ATG"
library = t.literalValue as string;
if (la.kind == 44) {
lexer.NextToken();
Expect(3);
#line 919 "VBNET.ATG"
alias = t.literalValue as string;
}
if (la.kind == 24) {
lexer.NextToken();
if (StartOf(4)) {
FormalParameterList(
#line 920 "VBNET.ATG"
p);
}
Expect(25);
}
Expect(1);
#line 923 "VBNET.ATG"
DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, null, p, attributes, library, alias, charsetModifer);
declareDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -