Example #1
0
        // 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();
            }
        }
Example #2
0
 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);
   }
 }
Example #3
0
 public ModifierNode(ModifierToken token, ModifierGroup group)
 {
     Token = token;
 }