--- /dev/null
+%{
+#include "hspincl.h"
+%}
+%{{
+module U_tree where
+import UgenUtil
+import Util
+
+import U_binding
+import U_coresyn ( U_coresyn ) -- interface only
+import U_hpragma ( U_hpragma ) -- interface only
+import U_list
+import U_literal
+import U_ttype
+
+type U_infixTree = (ProtoName, U_tree, U_tree)
+
+rdU_infixTree :: _Addr -> UgnM U_infixTree
+rdU_infixTree pt
+ = ioToUgnM (_casm_ ``%r = gident(*Rginfun_hs((struct Sap *)%0));'' pt) `thenUgn` \ op_t ->
+ ioToUgnM (_casm_ ``%r = (*Rginarg1_hs((struct Sap *)%0));'' pt) `thenUgn` \ arg1_t ->
+ ioToUgnM (_casm_ ``%r = (*Rginarg2_hs((struct Sap *)%0));'' pt) `thenUgn` \ arg2_t ->
+
+ rdU_unkId op_t `thenUgn` \ op ->
+ rdU_tree arg1_t `thenUgn` \ arg1 ->
+ rdU_tree arg2_t `thenUgn` \ arg2 ->
+ returnUgn (op, arg1, arg2)
+%}}
+type tree;
+ hmodule : < ghname : stringId;
+ ghimplist : list;
+ ghexplist : list;
+ ghmodlist : binding;
+ ghmodline : long; >;
+ ident : < gident : unkId; >;
+ lit : < glit : literal; >;
+ tuple : < gtuplelist : list; >;
+ ap : < gfun : tree;
+ garg : tree; >;
+ lambda : < glampats : list;
+ glamexpr : tree;
+ glamline : long; >;
+ let : < gletvdeflist : binding;
+ gletvexpr : tree; >;
+ casee : < gcaseexpr : tree;
+ gcasebody : list; >;
+ ife : < gifpred : tree;
+ gifthen : tree;
+ gifelse : tree; >;
+ par : < gpare : tree; >;
+ as : < gasid : unkId;
+ gase : tree; >;
+ lazyp : < glazyp : tree; >;
+ plusp : < gplusp : tree;
+ gplusi : literal; >;
+ wildp : < >;
+ restr : < grestre : tree;
+ grestrt : ttype; >;
+ comprh : < gcexp : tree;
+ gcquals : list; >;
+ qual : < gqpat : tree;
+ gqexp : tree; >;
+ guard : < ggexp : tree; >;
+ def : < ggdef : tree; >;
+ tinfixop: < gdummy : infixTree; >;
+ lsection: < glsexp : tree;
+ glsop : unkId; >;
+ rsection: < grsop : unkId;
+ grsexp : tree; >;
+ eenum : < gefrom : tree;
+ gestep : list;
+ geto : list; >;
+ llist : < gllist : list; >;
+ ccall : < gccid : stringId;
+ gccinfo : stringId;
+ gccargs : list; >;
+ scc : < gsccid : hstring;
+ gsccexp : tree; >;
+ negate : < gnexp : tree; >;
+end;