type name = {text : string;tok : int;
}type ty = | Tbase| Tname of name| Tstruct of name option * decl list option| Tenum of name option * (name * expr option) list option| Tptr of ty| Tarray of ty * expr option| Tfunc of ty * decl list| Ttypeof of expr
and decl = {dname : name option;dty : ty;dinit : init option;
}and designator = | Dfield of name| Dindex of expr
and spec = {typedef : bool;base : ty;
}type define = {mname : name;mparams : name list option;mbody : name list;
}type file = {items : item list;defines : define list;skipped : (int * int) list;
}