Parse (to "sorry") arrays of named types.
This commit is contained in:
parent
621c09105c
commit
ceaa60d2f4
6
parse.y
6
parse.y
|
|
@ -884,8 +884,10 @@ data_type /* IEEE1800-2005: A.2.2.1 */
|
||||||
FILE_NAME(tmp, @1);
|
FILE_NAME(tmp, @1);
|
||||||
$$ = tmp;
|
$$ = tmp;
|
||||||
}
|
}
|
||||||
| TYPE_IDENTIFIER
|
| TYPE_IDENTIFIER range_opt
|
||||||
{ $$ = $1; }
|
{ if ($2) $$ = new array_type_t($1, $2);
|
||||||
|
else $$ = $1;
|
||||||
|
}
|
||||||
| K_string
|
| K_string
|
||||||
{ yyerror(@1, "sorry: String data type not supported.");
|
{ yyerror(@1, "sorry: String data type not supported.");
|
||||||
$$ = 0;
|
$$ = 0;
|
||||||
|
|
|
||||||
5
pform.cc
5
pform.cc
|
|
@ -2770,6 +2770,11 @@ void pform_set_data_type(const struct vlltype&li, data_type_t*data_type, list<pe
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (/*array_type_t*array_type = */ dynamic_cast<array_type_t*> (data_type)) {
|
||||||
|
VLerror(li, "sorry: General array types not supported.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,17 @@ struct vector_type_t : public data_type_t {
|
||||||
std::auto_ptr< list<pform_range_t> > pdims;
|
std::auto_ptr< list<pform_range_t> > pdims;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The array_type_t is a generalization of the vector_type_t in that
|
||||||
|
* the base type is another general data type.
|
||||||
|
*/
|
||||||
|
struct array_type_t : public data_type_t {
|
||||||
|
inline explicit array_type_t(data_type_t*btype, std::list<pform_range_t>*pd)
|
||||||
|
: base_type(btype), packed_dims(pd) { }
|
||||||
|
data_type_t*base_type;
|
||||||
|
std::auto_ptr< list<pform_range_t> > packed_dims;
|
||||||
|
};
|
||||||
|
|
||||||
struct real_type_t : public data_type_t {
|
struct real_type_t : public data_type_t {
|
||||||
enum type_t { REAL, SHORTREAL };
|
enum type_t { REAL, SHORTREAL };
|
||||||
inline explicit real_type_t(type_t tc) : type_code(tc) { }
|
inline explicit real_type_t(type_t tc) : type_code(tc) { }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue