--- /dev/null
+%{
+#include "hspincl.h"
+%}
+%{{
+module U_binding where
+import UgenUtil
+import Util
+
+import U_coresyn ( U_coresyn ) -- for interfaces only
+import U_hpragma
+import U_list
+import U_literal ( U_literal ) -- for interfaces only
+import U_ttype
+%}}
+type binding;
+ tbind : < gtbindc : list;
+ gtbindid : ttype;
+ gtbindl : list;
+ gtbindd : list;
+ gtline : long;
+ gtpragma : hpragma; >;
+ nbind : < gnbindid : ttype;
+ gnbindas : ttype;
+ gnline : long;
+ gnpragma : hpragma; >;
+ pbind : < gpbindl : list;
+ gpline : long; >;
+ fbind : < gfbindl : list;
+ gfline : long; >;
+ abind : < gabindfst : binding;
+ gabindsnd : binding; >;
+ lbind : < glbindfst : binding;
+ glbindsnd : binding; >;
+ ebind : < gebindl : list;
+ gebind : binding;
+ geline : long; >;
+ hbind : < ghbindl : list;
+ ghbind : binding;
+ ghline : long; >;
+ ibind : < gibindc : list;
+ gibindid : unkId;
+ gibindi : ttype;
+ gibindw : binding;
+ giline : long;
+ gipragma : hpragma; >;
+ dbind : < gdbindts : list;
+ gdline : long; >;
+ cbind : < gcbindc : list;
+ gcbindid : ttype;
+ gcbindw : binding;
+ gcline : long;
+ gcpragma : hpragma; >;
+ sbind : < gsbindids : list;
+ gsbindid : ttype;
+ gsline : long;
+ gspragma : hpragma; >;
+ mbind : < gmbindmodn : stringId;
+ gmbindimp : list;
+ gmbindren : list;
+ gmline : long; >;
+ nullbind : < >;
+ import : < giebindmod : stringId;
+ giebindexp : list;
+ giebindren : list;
+ giebinddef : binding;
+ giebindfile : stringId;
+ giebindline : long; >;
+ hiding : < gihbindmod : stringId;
+ gihbindexp : list;
+ gihbindren : list;
+ gihbinddef : binding;
+ gihbindfile : stringId;
+ gihbindline : long; >;
+
+ /* user-specified pragmas:XXXX */
+
+ vspec_uprag : < gvspec_id : unkId;
+ gvspec_tys : list;
+ gvspec_line : long; >;
+
+ vspec_ty_and_id : < gvspec_ty : ttype;
+ gvspec_tyid : list; /* nil or singleton */ >;
+
+ ispec_uprag : < gispec_clas : unkId;
+ gispec_ty : ttype;
+ gispec_line : long; >;
+
+ inline_uprag: < ginline_id : unkId;
+ ginline_howto: list;
+ ginline_line : long; >;
+
+ deforest_uprag: < gdeforest_id : unkId;
+ gdeforest_line : long; >;
+
+ magicuf_uprag:< gmagicuf_id : unkId;
+ gmagicuf_str : stringId;
+ gmagicuf_line : long; >;
+
+ abstract_uprag:<gabstract_id : unkId;
+ gabstract_line : long; >;
+
+ dspec_uprag : < gdspec_id : unkId;
+ gdspec_tys : list;
+ gdspec_line : long; >;
+
+end;