📄 parser.cs
字号:
#line 1 "VBNET.ATG"
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Parser.VB;
using ASTAttribute = ICSharpCode.NRefactory.Ast.Attribute;
/*
Parser.frame file for NRefactory.
*/
using System;
using System.Reflection;
namespace ICSharpCode.NRefactory.Parser.VB {
partial class Parser : AbstractParser
{
const int maxT = 205;
const bool T = true;
const bool x = false;
#line 12 "VBNET.ATG"
/*
*/
void VBNET() {
#line 230 "VBNET.ATG"
lexer.NextToken(); // get the first token
compilationUnit = new CompilationUnit();
while (la.kind == 1) {
lexer.NextToken();
}
while (la.kind == 136) {
OptionStmt();
}
while (la.kind == 108) {
ImportsStmt();
}
while (
#line 236 "VBNET.ATG"
IsGlobalAttrTarget()) {
GlobalAttributeSection();
}
while (StartOf(1)) {
NamespaceMemberDecl();
}
Expect(0);
}
void OptionStmt() {
#line 241 "VBNET.ATG"
INode node = null; bool val = true;
Expect(136);
#line 242 "VBNET.ATG"
Location startPos = t.Location;
if (la.kind == 95) {
lexer.NextToken();
if (la.kind == 134 || la.kind == 135) {
OptionValue(
#line 244 "VBNET.ATG"
ref val);
}
#line 245 "VBNET.ATG"
node = new OptionDeclaration(OptionType.Explicit, val);
} else if (la.kind == 164) {
lexer.NextToken();
if (la.kind == 134 || la.kind == 135) {
OptionValue(
#line 247 "VBNET.ATG"
ref val);
}
#line 248 "VBNET.ATG"
node = new OptionDeclaration(OptionType.Strict, val);
} else if (la.kind == 70) {
lexer.NextToken();
if (la.kind == 51) {
lexer.NextToken();
#line 250 "VBNET.ATG"
node = new OptionDeclaration(OptionType.CompareBinary, val);
} else if (la.kind == 169) {
lexer.NextToken();
#line 251 "VBNET.ATG"
node = new OptionDeclaration(OptionType.CompareText, val);
} else SynErr(206);
} else SynErr(207);
EndOfStmt();
#line 256 "VBNET.ATG"
if (node != null) {
node.StartLocation = startPos;
node.EndLocation = t.Location;
compilationUnit.AddChild(node);
}
}
void ImportsStmt() {
#line 279 "VBNET.ATG"
List<Using> usings = new List<Using>();
Expect(108);
#line 283 "VBNET.ATG"
Location startPos = t.Location;
Using u;
ImportClause(
#line 286 "VBNET.ATG"
out u);
#line 286 "VBNET.ATG"
if (u != null) { usings.Add(u); }
while (la.kind == 12) {
lexer.NextToken();
ImportClause(
#line 288 "VBNET.ATG"
out u);
#line 288 "VBNET.ATG"
if (u != null) { usings.Add(u); }
}
EndOfStmt();
#line 292 "VBNET.ATG"
UsingDeclaration usingDeclaration = new UsingDeclaration(usings);
usingDeclaration.StartLocation = startPos;
usingDeclaration.EndLocation = t.Location;
compilationUnit.AddChild(usingDeclaration);
}
void GlobalAttributeSection() {
Expect(27);
#line 2025 "VBNET.ATG"
Location startPos = t.Location;
if (la.kind == 49) {
lexer.NextToken();
} else if (la.kind == 121) {
lexer.NextToken();
} else SynErr(208);
#line 2027 "VBNET.ATG"
string attributeTarget = t.val.ToLower(System.Globalization.CultureInfo.InvariantCulture);
List<ASTAttribute> attributes = new List<ASTAttribute>();
ASTAttribute attribute;
Expect(13);
Attribute(
#line 2031 "VBNET.ATG"
out attribute);
#line 2031 "VBNET.ATG"
attributes.Add(attribute);
while (
#line 2032 "VBNET.ATG"
NotFinalComma()) {
if (la.kind == 12) {
lexer.NextToken();
if (la.kind == 49) {
lexer.NextToken();
} else if (la.kind == 121) {
lexer.NextToken();
} else SynErr(209);
Expect(13);
}
Attribute(
#line 2032 "VBNET.ATG"
out attribute);
#line 2032 "VBNET.ATG"
attributes.Add(attribute);
}
if (la.kind == 12) {
lexer.NextToken();
}
Expect(26);
EndOfStmt();
#line 2037 "VBNET.ATG"
AttributeSection section = new AttributeSection(attributeTarget, attributes);
section.StartLocation = startPos;
section.EndLocation = t.EndLocation;
compilationUnit.AddChild(section);
}
void NamespaceMemberDecl() {
#line 321 "VBNET.ATG"
ModifierList m = new ModifierList();
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
string qualident;
if (la.kind == 126) {
lexer.NextToken();
#line 328 "VBNET.ATG"
Location startPos = t.Location;
Qualident(
#line 330 "VBNET.ATG"
out qualident);
#line 332 "VBNET.ATG"
INode node = new NamespaceDeclaration(qualident);
node.StartLocation = startPos;
compilationUnit.AddChild(node);
compilationUnit.BlockStart(node);
Expect(1);
NamespaceBody();
#line 340 "VBNET.ATG"
node.EndLocation = t.Location;
compilationUnit.BlockEnd();
} else if (StartOf(2)) {
while (la.kind == 27) {
AttributeSection(
#line 344 "VBNET.ATG"
out section);
#line 344 "VBNET.ATG"
attributes.Add(section);
}
while (StartOf(3)) {
TypeModifier(
#line 345 "VBNET.ATG"
m);
}
NonModuleDeclaration(
#line 345 "VBNET.ATG"
m, attributes);
} else SynErr(210);
}
void OptionValue(
#line 264 "VBNET.ATG"
ref bool val) {
if (la.kind == 135) {
lexer.NextToken();
#line 266 "VBNET.ATG"
val = true;
} else if (la.kind == 134) {
lexer.NextToken();
#line 268 "VBNET.ATG"
val = false;
} else SynErr(211);
}
void EndOfStmt() {
if (la.kind == 1) {
lexer.NextToken();
} else if (la.kind == 13) {
lexer.NextToken();
if (la.kind == 1) {
lexer.NextToken();
}
} else SynErr(212);
}
void ImportClause(
#line 299 "VBNET.ATG"
out Using u) {
#line 301 "VBNET.ATG"
string qualident = null;
TypeReference aliasedType = null;
u = null;
Qualident(
#line 305 "VBNET.ATG"
out qualident);
if (la.kind == 11) {
lexer.NextToken();
TypeName(
#line 306 "VBNET.ATG"
out aliasedType);
}
#line 308 "VBNET.ATG"
if (qualident != null && qualident.Length > 0) {
if (aliasedType != null) {
u = new Using(qualident, aliasedType);
} else {
u = new Using(qualident);
}
}
}
void Qualident(
#line 2760 "VBNET.ATG"
out string qualident) {
#line 2762 "VBNET.ATG"
string name;
qualidentBuilder.Length = 0;
Identifier();
#line 2766 "VBNET.ATG"
qualidentBuilder.Append(t.val);
while (
#line 2767 "VBNET.ATG"
DotAndIdentOrKw()) {
Expect(10);
IdentifierOrKeyword(
#line 2767 "VBNET.ATG"
out name);
#line 2767 "VBNET.ATG"
qualidentBuilder.Append('.'); qualidentBuilder.Append(name);
}
#line 2769 "VBNET.ATG"
qualident = qualidentBuilder.ToString();
}
void TypeName(
#line 1918 "VBNET.ATG"
out TypeReference typeref) {
#line 1919 "VBNET.ATG"
ArrayList rank = null;
NonArrayTypeName(
#line 1921 "VBNET.ATG"
out typeref, false);
ArrayTypeModifiers(
#line 1922 "VBNET.ATG"
out rank);
#line 1923 "VBNET.ATG"
if (rank != null && typeref != null) {
typeref.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
}
void NamespaceBody() {
while (StartOf(1)) {
NamespaceMemberDecl();
}
Expect(88);
Expect(126);
Expect(1);
}
void AttributeSection(
#line 2095 "VBNET.ATG"
out AttributeSection section) {
#line 2097 "VBNET.ATG"
string attributeTarget = "";List<ASTAttribute> attributes = new List<ASTAttribute>();
ASTAttribute attribute;
Expect(27);
#line 2101 "VBNET.ATG"
Location startPos = t.Location;
if (
#line 2102 "VBNET.ATG"
IsLocalAttrTarget()) {
if (la.kind == 93) {
lexer.NextToken();
#line 2103 "VBNET.ATG"
attributeTarget = "event";
} else if (la.kind == 154) {
lexer.NextToken();
#line 2104 "VBNET.ATG"
attributeTarget = "return";
} else {
Identifier();
#line 2107 "VBNET.ATG"
string val = t.val.ToLower(System.Globalization.CultureInfo.InvariantCulture);
if (val != "field" || val != "method" ||
val != "module" || val != "param" ||
val != "property" || val != "type")
Error("attribute target specifier (event, return, field," +
"method, module, param, property, or type) expected");
attributeTarget = t.val;
}
Expect(13);
}
Attribute(
#line 2117 "VBNET.ATG"
out attribute);
#line 2117 "VBNET.ATG"
attributes.Add(attribute);
while (
#line 2118 "VBNET.ATG"
NotFinalComma()) {
Expect(12);
Attribute(
#line 2118 "VBNET.ATG"
out attribute);
#line 2118 "VBNET.ATG"
attributes.Add(attribute);
}
if (la.kind == 12) {
lexer.NextToken();
}
Expect(26);
#line 2122 "VBNET.ATG"
section = new AttributeSection(attributeTarget, attributes);
section.StartLocation = startPos;
section.EndLocation = t.EndLocation;
}
void TypeModifier(
#line 2840 "VBNET.ATG"
ModifierList m) {
switch (la.kind) {
case 148: {
lexer.NextToken();
#line 2841 "VBNET.ATG"
m.Add(Modifiers.Public, t.Location);
break;
}
case 147: {
lexer.NextToken();
#line 2842 "VBNET.ATG"
m.Add(Modifiers.Protected, t.Location);
break;
}
case 99: {
lexer.NextToken();
#line 2843 "VBNET.ATG"
m.Add(Modifiers.Internal, t.Location);
break;
}
case 145: {
lexer.NextToken();
#line 2844 "VBNET.ATG"
m.Add(Modifiers.Private, t.Location);
break;
}
case 158: {
lexer.NextToken();
#line 2845 "VBNET.ATG"
m.Add(Modifiers.Static, t.Location);
break;
}
case 157: {
lexer.NextToken();
#line 2846 "VBNET.ATG"
m.Add(Modifiers.New, t.Location);
break;
}
case 122: {
lexer.NextToken();
#line 2847 "VBNET.ATG"
m.Add(Modifiers.Abstract, t.Location);
break;
}
case 131: {
lexer.NextToken();
#line 2848 "VBNET.ATG"
m.Add(Modifiers.Sealed, t.Location);
break;
}
case 203: {
lexer.NextToken();
#line 2849 "VBNET.ATG"
m.Add(Modifiers.Partial, t.Location);
break;
}
default: SynErr(213); break;
}
}
void NonModuleDeclaration(
#line 404 "VBNET.ATG"
ModifierList m, List<AttributeSection> attributes) {
#line 406 "VBNET.ATG"
TypeReference typeRef = null;
List<TypeReference> baseInterfaces = null;
switch (la.kind) {
case 67: {
#line 409 "VBNET.ATG"
m.Check(Modifiers.Classes);
lexer.NextToken();
#line 412 "VBNET.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
newType.StartLocation = t.Location;
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
newType.Type = ClassType.Class;
Identifier();
#line 419 "VBNET.ATG"
newType.Name = t.val;
TypeParameterList(
#line 420 "VBNET.ATG"
newType.Templates);
EndOfStmt();
#line 422 "VBNET.ATG"
newType.BodyStartLocation = t.Location;
if (la.kind == 110) {
ClassBaseType(
#line 423 "VBNET.ATG"
out typeRef);
#line 423 "VBNET.ATG"
newType.BaseTypes.Add(typeRef);
}
while (la.kind == 107) {
TypeImplementsClause(
#line 424 "VBNET.ATG"
out baseInterfaces);
#line 424 "VBNET.ATG"
newType.BaseTypes.AddRange(baseInterfaces);
}
ClassBody(
#line 425 "VBNET.ATG"
newType);
Expect(88);
Expect(67);
#line 426 "VBNET.ATG"
newType.EndLocation = t.EndLocation;
Expect(1);
#line 429 "VBNET.ATG"
compilationUnit.BlockEnd();
break;
}
case 121: {
lexer.NextToken();
#line 433 "VBNET.ATG"
m.Check(Modifiers.VBModules);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -