Esempio n. 1
0
        private PLvalue DetypeArray(PType type)
        {
            if (type is AArrayTempType)
            {
                AArrayTempType atype = (AArrayTempType)type;
                return(new AArrayLvalue(atype.GetToken(), new ALvalueExp(DetypeArray(atype.GetType())),
                                        atype.GetDimention()));
            }
            if (type is ANamedType)
            {
                ANamedType atype = (ANamedType)type;
                return(new AAmbiguousNameLvalue(atype.GetName()));
            }
            if (type is AVoidType)
            {
                AVoidType atype = (AVoidType)type;
                throw new Exception(Util.TokenToStringPos(atype.GetToken()) + " (Weeder)Unexpected type: void. It should not be possible for this error to occur");
            }

            /*if (type is AArrayType)
             * {
             *  AArrayType atype = (AArrayType)type;
             *  throw new Exception(Util.TokenToStringPos(atype.GetToken()) + " (Weeder)Unexpected type: ArrayType. It should not be possible for this error to occur");
             * }*/
            throw new Exception("(Weeder)Unexpected type: none. It should not be possible for this error to occur");
        }
Esempio n. 2
0
 public override void OutAVoidType(AVoidType node)
 {
     // check: void type must be a return types.
     if (node.Parent().GetType() != typeof(AFuncDecl))
     {
         Error.Fatal(ErrorType.VoidTypeNotReturnType, node.GetToken());
     }
     base.OutAVoidType(node);
 }
Esempio n. 3
0
 public override void CaseAVoidType(AVoidType node)
 {
     Write("void");
 }