// TODO: fix this. /*public override object AcceptVisitor(IVisitor visitor) * { * return visitor.Visit(this); * } * public override S AcceptVisitor<S>(IVisitor<S> visitor) * { * return visitor.Visit(this); * } * public override S AcceptVisitor<T, S>(IVisitor<T, S> visitor, T data) * { * return visitor.Visit(this, data); * }*/ public static ModifierGroup GetModifierGroup(ModifierToken token) { switch (token) { case ModifierToken.None: return(ModifierGroup.None); case ModifierToken.Custom: return(ModifierGroup.Custom); case ModifierToken.Internal: case ModifierToken.Public: case ModifierToken.Protected: case ModifierToken.Private: case ModifierToken.Readonly: return(ModifierGroup.Access); case ModifierToken.Abstract: case ModifierToken.Virtual: case ModifierToken.Sealed: case ModifierToken.New: case ModifierToken.Override: case ModifierToken.Static: return(ModifierGroup.InheritanceControl); case ModifierToken.Implicit: case ModifierToken.Explicit: return(ModifierGroup.ConversionType); case ModifierToken.Async: return(ModifierGroup.Parallelism); case ModifierToken.Volatile: case ModifierToken.Unsafe: case ModifierToken.Extern: return(ModifierGroup.Optimizations); case ModifierToken.In: case ModifierToken.Out: case ModifierToken.Ref: case ModifierToken.Params: return(ModifierGroup.ParameterPassing); default: throw new NotImplementedException(); } }
private List<ModifierToken> ParseModifiers() { List<ModifierToken> result = new List<ModifierToken>(); ModifierToken tok = new ModifierToken(this.currentToken, this.scanner.SourceLocationOfLastScannedToken); for (; ; ) { switch (this.currentToken) { case Token.Abstract: case Token.Extern: case Token.Internal: case Token.New: case Token.Override: case Token.Protected: case Token.Private: case Token.Public: case Token.Readonly: case Token.Sealed: case Token.Static: case Token.Volatile: case Token.Virtual: case Token.Unsafe: result.Add(tok); break; case Token.Partial: Token nextToken = this.PeekNextToken(); if (nextToken == Token.Class || nextToken == Token.Struct || nextToken == Token.Interface) result.Add(tok); else if (!Parser.IdentifierOrNonReservedKeyword[nextToken]) this.HandleError(Error.PartialMisplaced); this.GetNextToken(); return result; default: return result; } this.GetNextToken(); tok = new ModifierToken(this.currentToken, this.scanner.SourceLocationOfLastScannedToken); } }
public ModifierNode(ModifierToken token, ModifierGroup group) { Token = token; }