content: module Data_Lazy where
  
  import LrcPrelude
  
  --
  --      Abstract Syntax
  --
  --
  data P
  	= C_RootProd_1 !Defs 
  	deriving (Show , Eq , Ord)
  
  data Defs
  	= C_Defs2_1 !Def !Defs 
  	| C_NoDefs_1 
  	deriving (Show , Eq , Ord)
  
  data Def
  	= C_Arraydecl_1 !Type !Name !INT 
  	| C_Declfunc_1 !Type !Name !FormPars !Stats 
  	| C_Declfunc_header_1 !Type !Name !FormPars !Stats 
  	| C_Declfunc_header_novar_1 !Type !Name !FormPars !Stats 
  	| C_Vardecl_1 !Type !Name 
  	deriving (Show , Eq , Ord)
  
  data Type
  	= C_Booltype_1 
  	| C_Chartype_1 
  	| C_Errortype_1 
  	| C_Inttype_1 
  	| C_Realtype_1 
  	deriving (Show , Eq , Ord)
  
  data Name
  	= C_Ident_1 !STR 
  	deriving (Show , Eq , Ord)
  
  data FormPars
  	= C_Emptyformpars_1 
  	| C_Lstformpars_1 !FormPar !FormPars 
  	deriving (Show , Eq , Ord)
  
  data FormPar
  	= C_Declformpar_1 !Type !Name 
  	deriving (Show , Eq , Ord)
  
  data Stats
  	= C_Emptystat_1 
  	| C_Lststats_1 !Stat !Stats 
  	deriving (Show , Eq , Ord)
  
  data Stat
  	= C_ArrAssign_1 !ArrayUse !Exp 
  	| C_Assign_1 !Name !Exp 
  	| C_Funccall_1 !Name !ActPars 
  	| C_If_t_e_1 !Exp !Stats !Stats 
  	| C_Input_1 !Name 
  	| C_LocalDecl_1 !Type !Name 
  	| C_Print_1 !Exp 
  	| C_While_1 !Exp !Stats 
  	deriving (Show , Eq , Ord)
  
  data ArrayUse
  	= C_ArrayInd_1 !Name !Exp 
  	deriving (Show , Eq , Ord)
  
  data Exp
  	= C_AddExp_1 !Exp !Exp 
  	| C_AndExp_1 !Exp !Exp 
  	| C_DivExp_1 !Exp !Exp 
  	| C_EqExp_1 !Exp !Exp 
  	| C_Factor_1 !Fac 
  	| C_GTExp_1 !Exp !Exp 
  	| C_LTExp_1 !Exp !Exp 
  	| C_MinExp_1 !Exp 
  	| C_MulExp_1 !Exp !Exp 
  	| C_NotExp_1 !Exp 
  	| C_OrExp_1 !Exp !Exp 
  	| C_SubExp_1 !Exp !Exp 
  	deriving (Show , Eq , Ord)
  
  data Fac
  	= C_ArrayConst_1 !ArrayUse 
  	| C_BoolConst_1 !BOOL 
  	| C_CNIdent_1 !Name 
  	| C_Expr_1 !Exp 
  	| C_Funcinv_1 !Name !ActPars 
  	| C_IntConst_1 !INT 
  	| C_RealConst_1 !REAL 
  	deriving (Show , Eq , Ord)
  
  data ActPars
  	= C_Emptyactpars_1 
  	| C_Lstactpars_1 !Exp !ActPars 
  	deriving (Show , Eq , Ord)
  
  data PPRoot
  	= C_All_1 !PPS 
  	| C_Best_1 !PPS 
  	deriving (Show , Eq , Ord)
  
  data PPS
  	= C_Above_1 !PPS !PPS 
  	| C_Apply_1 !PPC !PPSArgs 
  	| C_Beside_1 !PPS !PPS 
  	| C_Dup_1 !PPS !PPS 
  	| C_Empty_1 
  	| C_FillBlock_1 !INT !FillList 
  	| C_Filla_1 !FillList 
  	| C_Indent_1 !INT !PPS 
  	| C_Join_1 !PPS 
  	| C_Text_1 !STR 
  	deriving (Show , Eq , Ord)
  
  data PPC
  	= C_AboveC_1 !PPC !PPC 
  	| C_ApplyC_1 !PPC !PPCArgs 
  	| C_BesideC_1 !PPC !PPC 
  	| C_DupC_1 !PPC !PPC 
  	| C_IndentC_1 !INT !PPC 
  	| C_JoinC_1 !PPC 
  	| C_ParC_1 
  	deriving (Show , Eq , Ord)
  
  data PPCArgs
  	= C_ConsPPCArgs_1 !PPC !PPCArgs 
  	| C_NilPPCArgs_1 
  	deriving (Show , Eq , Ord)
  
  data PPSArgs
  	= C_ConsArgs_1 !PPS !PPSArgs 
  	| C_NilArgs_1 
  	deriving (Show , Eq , Ord)
  
  data FillList
  	= C_ConsFillList_1 !PPS !FillList 
  	| C_NilFillList_1 
  	deriving (Show , Eq , Ord)
  
  
  --
  --      Type of Attributes
  --
  --
  type Code = [Instr]
  
  type CodeParams = [Code]
  
  data Disp
  	= C_Displ_1 !PPS 
  	deriving (Show , Eq , Ord)
  
  data ENTRY
  	= C_Consarray_1 !Type !INT !INT 
  	| C_Consfunc_1 !Type !INT !LSTPARAM 
  	| C_Consvar_1 !Type !INT 
  	| C_EmptyEntry_1 
  	deriving (Show , Eq , Ord)
  
  type ERROR = [OneError]
  
  data Format
  	= C_Elem_1 !INT !INT !INT !Lst_Str 
  	deriving (Show , Eq , Ord)
  
  type Formats = [Format]
  
  data Instr
  	= C_ALabel_1 !Name 
  	| C_Add_1 
  	| C_And_1 
  	| C_Call_1 !Name 
  	| C_Cod_1 
  	| C_Data_1 
  	| C_Div_1 
  	| C_Eq_1 
  	| C_Gt_1 
  	| C_Halt_1 
  	| C_IIn_1 
  	| C_IOut_1 
  	| C_Jump_1 !Name 
  	| C_Jumpf_1 !Name 
  	| C_Load_1 
  	| C_Lt_1 
  	| C_Minus_1 
  	| C_Mul_1 
  	| C_Neq_1 
  	| C_Not_1 
  	| C_Or_1 
  	| C_Pusha_1 !Name !INT 
  	| C_Pushb_1 !BOOL 
  	| C_Pushi_1 !INT 
  	| C_Pushr_1 !REAL 
  	| C_Ret_1 
  	| C_Store_1 
  	| C_Sub_1 
  	| C_Var_1 !Name !INT !Type 
  	deriving (Show , Eq , Ord)
  
  type LSTPARAM = [OneParam]
  
  type Lst_Str = [STR]
  
  data OneError
  	= C_E_FormParam_AD_1 !Name 
  	| C_E_Fun_ND_1 !Name 
  	| C_E_Loc_Name_AD_1 !Name 
  	| C_E_Name_AD_1 !Name 
  	| C_E_Name_ND_1 !Name 
  	deriving (Show , Eq , Ord)
  
  data OneParam
  	= C_AParam_1 !Type !Name 
  	deriving (Show , Eq , Ord)
  
  data OneTypeError
  	= C_E_T_ActParam_1 
  	| C_E_T_BOP_1 
  	| C_E_T_DT_1 !Name 
  	| C_E_T_IndArrNotInt_1 
  	| C_E_T_NC_1 !Type !Type 
  	| C_E_T_NotArithExp_1 
  	| C_E_T_NotBooleanExp_1 
  	| C_E_T_if_t_e_1 
  	| C_E_T_while_1 
  	| C_NoTypeError_1 
  	deriving (Show , Eq , Ord)
  
  data Pair_Formats
  	= C_C_Pair_Formats_1 !Formats !BOOL 
  	deriving (Show , Eq , Ord)
  
  data Pair_Lst_T_Errs
  	= C_CPair_Lst_T_Errs_1 !T_Errs !T_Errs 
  	deriving (Show , Eq , Ord)
  
  data Pair_Lst_T_Fmts
  	= C_CPair_Lst_T_Fmts_1 !T_Fmts !T_Fmts 
  	deriving (Show , Eq , Ord)
  
  data Pair_Lst_T_Mins
  	= C_CPair_Lst_T_Mins_1 !T_Mins !T_Mins 
  	deriving (Show , Eq , Ord)
  
  data Pair_T_Formats
  	= C_C_Pair_T_Formats_1 !T_Formats !BOOL 
  	deriving (Show , Eq , Ord)
  
  data Sizes
  	= C_Triple_1 !INT !INT !INT 
  	deriving (Show , Eq , Ord)
  
  type TYPES = [Type]
  
  type T_Errs = [BOOL]
  
  type T_Fmts = [T_Formats]
  
  data T_Formats
  	= C_AFormat_1 !Formats 
  	| C_TFormats_1 !Formats !Formats !BOOL !BOOL 
  	deriving (Show , Eq , Ord)
  
  data T_Frame
  	= C_F_1 !INT !INT 
  	deriving (Show , Eq , Ord)
  
  type T_Mins = [Sizes]
  
  type T_Reqs = [T_Frame]
  
  type TypeError = [OneTypeError]
  
  