예제 #1
0
 EquelleType type() const
 {
     // Either erpr_ must be an Array, or, if not,
     // we must be a (Collection Of) Scalar,
     // since expr_ must be a (Collection Of) Vector.
     EquelleType t = expr_->type();
     if (t.isArray()) {
         t.setArraySize(NotAnArray);
         return t;
     } else {
         assert(t.basicType() == Vector);
         t.setBasicType(Scalar);
         return t;
     }
 }
예제 #2
0
TypeNode* handleArrayType(const int array_size, TypeNode* type_expr)
{
    ArrayTypeNode* tn = new ArrayTypeNode(type_expr, array_size);
    tn->setLocation(FileLocation(yylineno));
    return tn;
#if 0
    EquelleType et = type_expr->type();
    if (et.isArray()) {
        yyerror("cannot create an Array of an Array.");
        return type_expr;
    } else {
        et.setArraySize(array_size);
        TypeNode* tn = new TypeNode(et);
        tn->setLocation(type_expr->location());
        delete type_expr;
        return tn;
    }
#endif
}
예제 #3
0
 EquelleType type() const
 {
     EquelleType bt = btype_->type();
     bt.setArraySize(array_size_);
     return bt;
 }
예제 #4
0
 EquelleType type() const
 {
     EquelleType t = expr_list_->arguments().front()->type();
     t.setArraySize(expr_list_->arguments().size());
     return t;
 }