+/* STG syntax */
+#define STGVAR 248 /* STGVAR snd :: (StgRhs,info) */
+#define STGAPP 249 /* STGAPP snd :: (StgVar,[Arg]) */
+#define STGPRIM 250 /* STGPRIM snd :: (PrimOp,[Arg]) */
+#define STGCON 251 /* STGCON snd :: (StgCon,[Arg]) */
+#define PRIMCASE 252 /* PRIMCASE snd :: (Expr,[PrimAlt]) */
+#define DEEFALT 253 /* DEEFALT snd :: (Var,Expr) */
+#define CASEALT 254 /* CASEALT snd :: (Con,[Var],Expr) */
+#define PRIMALT 255 /* PRIMALT snd :: ([Var],Expr) */
+
+/* Module groups */
+#define GRP_REC 256 /* GRP_REC snd :: [CONID] */
+#define GRP_NONREC 257 /* GRP_NONREC snd :: CONID */
+
+
+/*
+ Top-level interface entities
+ type Line = Int -- a line number
+ type ConVarId = CONIDCELL | VARIDCELL
+ type ExportListEntry = ConVarId | (ConId, [ConVarId])
+ type Associativity = mkInt of LEFT_ASS | RIGHT_ASS | NON_ASS
+ type Constr = ((ConId, [((Type,VarId,Int))]))
+ ((constr name, [((type, field name if any, strictness))]))
+ strictness: 0 => none, 1 => !, 2 => !! (unpacked)
+ All 2/3/4/5 tuples in the interface abstract syntax are done with
+ z-tuples.
+*/
+
+#define I_INTERFACE 260 /* snd :: ((ConId, [I_IMPORT..I_VALUE]))
+ interface name, list of iface entities */
+
+#define I_IMPORT 261 /* snd :: ((ConId, [ConVarId]))
+ module name, list of entities */
+
+#define I_INSTIMPORT 262 /* snd :: NIL -- not used at present */
+
+#define I_EXPORT 263 /* snd :: ((ConId, [ExportListEntry]))
+ this module name?, entities to export */
+
+#define I_FIXDECL 264 /* snd :: ((NIL|Int, Associativity, ConVarId))
+ fixity, associativity, name */
+
+#define I_INSTANCE 265 /* snd :: ((Line,
+ [((VarId,Kind))],
+ Type, VarId, Inst))
+ lineno,
+ forall-y bit (eg __forall [a b] =>),
+ other bit, eg { C a1 } -> { C2 a2 } -> ... -> { Cn an },
+ name of dictionary builder,
+ (after startGHCInstance) the instance table location */
+
+#define I_TYPE 266 /* snd :: ((Line, ConId, [((VarId,Kind))], Type))
+ lineno, tycon, kinded tyvars, the type expr */
+
+#define I_DATA 267 /* snd :: ((Line, [((QConId,VarId))], ConId,
+ [((VarId,Kind))], [Constr])
+ lineno, context, tycon, kinded tyvars, constrs
+ An empty constr list means exported abstractly. */
+
+#define I_NEWTYPE 268 /* snd :: ((Line, [((QConId,VarId))], ConId,
+ [((VarId,Kind))], ((ConId,Type)) ))
+ lineno, context, tycon, kinded tyvars, constr
+ constr==NIL means exported abstractly. */
+
+#define I_CLASS 269 /* snd :: ((Line, [((QConId,VarId))], ConId,
+ [((VarId,Kind))], [((VarId,Type))]))
+ lineno, context, classname,
+ kinded tyvars, method sigs */
+
+#define I_VALUE 270 /* snd :: ((Line, VarId, Type)) */
+
+/*
+ Top-level module entities.
+
+ type Export = ?
+*/
+#define M_MODULE 280 /* snd :: ((ConId, [Export],
+ M_IMPORT_Q .. M_VALUE]))
+ module name, export spec, top level entities */
+
+#define M_IMPORT_Q 281 /* snd :: ((?,?)) */
+#define M_IMPORT_UNQ 282 /* snd :: ((?,?)) */
+#define M_TYCON 283 /* snd :: ((Line,?,?,?)) */
+#define M_CLASS 284 /* snd :: ((Line,?,?,?)) */
+#define M_INST 285 /* snd :: ((Line,?,?)) */
+#define M_DEFAULT 286 /* snd :: ((Line,?)) */
+#define M_FOREIGN_EX 289 /* snd :: ((Line,?,?,?,?)) */
+#define M_FOREIGN_IM 290 /* snd :: ((Line,?,?,?,?)) */
+#define M_VALUE 291 /* snd :: ? */
+
+
+
+
+/*
+ Tagged tuples.
+*/
+#define ZTUP2 295 /* snd :: (Cell,Cell) */
+#define ZTUP3 296 /* snd :: (Cell,(Cell,Cell)) */
+#define ZTUP4 297 /* snd :: (Cell,(Cell,(Cell,Cell))) */
+#define ZTUP5 298 /* snd :: (Cell,(Cell,(Cell,(Cell,Cell)))) */