diff options
-rw-r--r-- | backend/backend.dcl | 70 | ||||
-rw-r--r-- | backendC/CleanCompilerSources/backend.h | 72 |
2 files changed, 66 insertions, 76 deletions
diff --git a/backend/backend.dcl b/backend/backend.dcl index ea676c1..7342962 100644 --- a/backend/backend.dcl +++ b/backend/backend.dcl @@ -4,39 +4,38 @@ definition module backend; from StdString import String; //3.1 -:: CPtr :== Int; +:: CPtr (:== Int); :: *UWorld :== Int; -:: *BackEnd; // :== CPtr; -:: BESymbolP; // :== CPtr; -:: BETypeNodeP; // :== CPtr; -:: BETypeArgP; // :== CPtr; -:: BETypeAltP; // :== CPtr; -:: BENodeP; // :== CPtr; -:: BEArgP; // :== CPtr; -:: BERuleAltP; // :== CPtr; -:: BEImpRuleP; // :== CPtr; -:: BETypeP; // :== CPtr; -:: BEFlatTypeP; // :== CPtr; -:: BETypeVarP; // :== CPtr; -:: BETypeVarListP; // :== CPtr; -:: BEConstructorListP; // :== CPtr; -:: BEFieldListP; // :== CPtr; -:: BENodeIdP; // :== CPtr; -:: BENodeDefP; // :== CPtr; -:: BEStrictNodeIdP; // :== CPtr; -:: BECodeParameterP; // :== CPtr; -:: BECodeBlockP; // :== CPtr; -:: BEStringListP; // :== CPtr; -:: BENodeIdListP; // :== CPtr; -:: BENodeIdRefCountListP; // :== CPtr; -:: BEUniVarEquations; // :== CPtr; -:: BEAttributeKindList; // :== CPtr; +:: *BackEnd (:== CPtr); +:: BESymbolP (:== CPtr); +:: BETypeNodeP (:== CPtr); +:: BETypeArgP (:== CPtr); +:: BETypeAltP (:== CPtr); +:: BENodeP (:== CPtr); +:: BEArgP (:== CPtr); +:: BERuleAltP (:== CPtr); +:: BEImpRuleP (:== CPtr); +:: BETypeP (:== CPtr); +:: BEFlatTypeP (:== CPtr); +:: BETypeVarP (:== CPtr); +:: BETypeVarListP (:== CPtr); +:: BEConstructorListP (:== CPtr); +:: BEFieldListP (:== CPtr); +:: BENodeIdP (:== CPtr); +:: BENodeDefP (:== CPtr); +:: BEStrictNodeIdP (:== CPtr); +:: BECodeParameterP (:== CPtr); +:: BECodeBlockP (:== CPtr); +:: BEStringListP (:== CPtr); +:: BENodeIdListP (:== CPtr); +:: BENodeIdRefCountListP (:== CPtr); +:: BEUniVarEquations (:== CPtr); +:: BEAttributeKindList (:== CPtr); :: BEAnnotation :== Int; :: BEAttribution :== Int; :: BESymbKind :== Int; :: BEArrayFunKind :== Int; :: BESelectorKind :== Int; -:: BEUpdateKind :== Int; :: BESpecialIdentIndex :== Int; BEGetVersion :: (!Int,!Int,!Int); // void BEGetVersion (int* current,int* oldestDefinition,int* oldestImplementation); @@ -204,12 +203,12 @@ BETypes :: !BETypeP !BETypeP !BackEnd -> (!BETypeP,!BackEnd); // BETypeP BETypes (BETypeP type,BETypeP types); BENoTypes :: !BackEnd -> (!BETypeP,!BackEnd); // BETypeP BENoTypes (); -BEFlatType :: !BESymbolP !BETypeVarListP !BackEnd -> (!BEFlatTypeP,!BackEnd); -// BEFlatTypeP BEFlatType (BESymbolP symbol,BETypeVarListP arguments); +BEFlatType :: !BESymbolP !BEAttribution !BETypeVarListP !BackEnd -> (!BEFlatTypeP,!BackEnd); +// BEFlatTypeP BEFlatType (BESymbolP symbol,BEAttribution attribution,BETypeVarListP arguments); BEAlgebraicType :: !BEFlatTypeP !BEConstructorListP !BackEnd -> BackEnd; // void BEAlgebraicType (BEFlatTypeP lhs,BEConstructorListP constructors); -BERecordType :: !Int !BEFlatTypeP !BETypeNodeP !BEFieldListP !BackEnd -> BackEnd; -// void BERecordType (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,BEFieldListP fields); +BERecordType :: !Int !BEFlatTypeP !BETypeNodeP !Int !BEFieldListP !BackEnd -> BackEnd; +// void BERecordType (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,int is_boxed_record,BEFieldListP fields); BEAbsType :: !BEFlatTypeP !BackEnd -> BackEnd; // void BEAbsType (BEFlatTypeP lhs); BEConstructors :: !BEConstructorListP !BEConstructorListP !BackEnd -> (!BEConstructorListP,!BackEnd); @@ -288,9 +287,9 @@ BEDeclareDynamicTypeSymbol :: !Int !Int !BackEnd -> BackEnd; // void BEDeclareDynamicTypeSymbol (int typeIndex,int moduleIndex); BEDynamicTempTypeSymbol :: !BackEnd -> (!BESymbolP,!BackEnd); // BESymbolP BEDynamicTempTypeSymbol (); -kBEVersionCurrent:==0x02100400; -kBEVersionOldestDefinition:==0x02030407; -kBEVersionOldestImplementation:==0x02030407; +kBEVersionCurrent:==0x02100401; +kBEVersionOldestDefinition:==0x02100401; +kBEVersionOldestImplementation:==0x02100401; kBEDebug:==1; kPredefinedModuleIndex:==1; BENoAnnot:==0; @@ -360,9 +359,6 @@ BESelector_U:==2; BESelector_F:==3; BESelector_L:==4; BESelector_N:==5; -BEUpdateDummy:==0; -BEUpdate:==1; -BEUpdate_U:==2; BESpecialIdentStdMisc:==0; BESpecialIdentAbort:==1; BESpecialIdentUndef:==2; diff --git a/backendC/CleanCompilerSources/backend.h b/backendC/CleanCompilerSources/backend.h index e72cceb..f194438 100644 --- a/backendC/CleanCompilerSources/backend.h +++ b/backendC/CleanCompilerSources/backend.h @@ -1,99 +1,99 @@ /* version info */ // increment this for every release -# define kBEVersionCurrent 0x02100400 +# define kBEVersionCurrent 0x02100401 // change this to the same value as kBEVersionCurrent if the new release is // not upward compatible (for example when a function is added) -# define kBEVersionOldestDefinition 0x02030407 +# define kBEVersionOldestDefinition 0x02100401 // change this to the same value as kBEVersionCurrent if the new release is // not downward compatible (for example when a function is removed) -# define kBEVersionOldestImplementation 0x02030407 +# define kBEVersionOldestImplementation 0x02100401 # define kBEDebug 1 /* pointer types */ -Clean (:: CPtr :== Int) +Clean (:: CPtr (:== Int)) Clean (:: *UWorld :== Int) typedef struct BackEnd *BackEnd; -Clean (:: *BackEnd :== CPtr) +Clean (:: *BackEnd (:== CPtr)) typedef struct symbol *BESymbolP; -Clean (:: BESymbolP :== CPtr) +Clean (:: BESymbolP (:== CPtr)) typedef struct type_node *BETypeNodeP; -Clean (:: BETypeNodeP :== CPtr) +Clean (:: BETypeNodeP (:== CPtr)) typedef struct type_arg *BETypeArgP; -Clean (:: BETypeArgP :== CPtr) +Clean (:: BETypeArgP (:== CPtr)) typedef struct type_alt *BETypeAltP; -Clean (:: BETypeAltP :== CPtr) +Clean (:: BETypeAltP (:== CPtr)) typedef struct node *BENodeP; -Clean (:: BENodeP :== CPtr) +Clean (:: BENodeP (:== CPtr)) typedef struct arg *BEArgP; -Clean (:: BEArgP :== CPtr) +Clean (:: BEArgP (:== CPtr)) typedef struct rule_alt *BERuleAltP; -Clean (:: BERuleAltP :== CPtr) +Clean (:: BERuleAltP (:== CPtr)) typedef struct imp_rule *BEImpRuleP; -Clean (:: BEImpRuleP :== CPtr) +Clean (:: BEImpRuleP (:== CPtr)) typedef struct type *BETypeP; -Clean (:: BETypeP :== CPtr) +Clean (:: BETypeP (:== CPtr)) typedef struct flat_type *BEFlatTypeP; -Clean (:: BEFlatTypeP :== CPtr) +Clean (:: BEFlatTypeP (:== CPtr)) typedef struct type_var *BETypeVarP; -Clean (:: BETypeVarP :== CPtr) +Clean (:: BETypeVarP (:== CPtr)) typedef struct type_var_list *BETypeVarListP; -Clean (:: BETypeVarListP :== CPtr) +Clean (:: BETypeVarListP (:== CPtr)) typedef struct constructor_list *BEConstructorListP; -Clean (:: BEConstructorListP :== CPtr) +Clean (:: BEConstructorListP (:== CPtr)) typedef struct field_list *BEFieldListP; -Clean (:: BEFieldListP :== CPtr) +Clean (:: BEFieldListP (:== CPtr)) typedef struct node_id *BENodeIdP; -Clean (:: BENodeIdP :== CPtr) +Clean (:: BENodeIdP (:== CPtr)) typedef struct node_def *BENodeDefP; -Clean (:: BENodeDefP :== CPtr) +Clean (:: BENodeDefP (:== CPtr)) typedef struct strict_node_id *BEStrictNodeIdP; -Clean (:: BEStrictNodeIdP :== CPtr) +Clean (:: BEStrictNodeIdP (:== CPtr)) typedef struct parameter *BECodeParameterP; -Clean (:: BECodeParameterP :== CPtr) +Clean (:: BECodeParameterP (:== CPtr)) typedef struct code_block *BECodeBlockP; -Clean (:: BECodeBlockP :== CPtr) +Clean (:: BECodeBlockP (:== CPtr)) typedef struct string_list *BEStringListP; -Clean (:: BEStringListP :== CPtr) +Clean (:: BEStringListP (:== CPtr)) typedef struct node_id_list_element *BENodeIdListP; -Clean (:: BENodeIdListP :== CPtr) +Clean (:: BENodeIdListP (:== CPtr)) typedef struct node_id_ref_count_list *BENodeIdRefCountListP; -Clean (:: BENodeIdRefCountListP :== CPtr) +Clean (:: BENodeIdRefCountListP (:== CPtr)) typedef struct uni_var_equats *BEUniVarEquations; -Clean (:: BEUniVarEquations :== CPtr) +Clean (:: BEUniVarEquations (:== CPtr)) typedef struct attr_kind_list *BEAttributeKindList; -Clean (:: BEAttributeKindList :== CPtr) +Clean (:: BEAttributeKindList (:== CPtr)) /* constants */ /* @@ -155,12 +155,6 @@ enum { BESelectorDummy, BESelector, BESelector_U, BESelector_F, BESelector_L, BESelector_N }; -typedef int BEUpdateKind; -Clean (::BEUpdateKind :== Int) -enum { - BEUpdateDummy, BEUpdate, BEUpdate_U -}; - typedef int BESpecialIdentIndex; Clean (::BESpecialIdentIndex :== Int) enum { @@ -427,14 +421,14 @@ Clean (BETypes :: BETypeP BETypeP BackEnd -> (BETypeP, BackEnd)) BETypeP BENoTypes (void); Clean (BENoTypes :: BackEnd -> (BETypeP, BackEnd)) -BEFlatTypeP BEFlatType (BESymbolP symbol, BETypeVarListP arguments); -Clean (BEFlatType :: BESymbolP BETypeVarListP BackEnd -> (BEFlatTypeP, BackEnd)) +BEFlatTypeP BEFlatType (BESymbolP symbol, BEAttribution attribution, BETypeVarListP arguments); +Clean (BEFlatType :: BESymbolP BEAttribution BETypeVarListP BackEnd -> (BEFlatTypeP, BackEnd)) void BEAlgebraicType (BEFlatTypeP lhs, BEConstructorListP constructors); Clean (BEAlgebraicType:: BEFlatTypeP BEConstructorListP BackEnd -> BackEnd) -void BERecordType (int moduleIndex, BEFlatTypeP lhs, BETypeNodeP constructorType, BEFieldListP fields); -Clean (BERecordType :: Int BEFlatTypeP BETypeNodeP BEFieldListP BackEnd -> BackEnd) +void BERecordType (int moduleIndex, BEFlatTypeP lhs, BETypeNodeP constructorType, int is_boxed_record, BEFieldListP fields); +Clean (BERecordType :: Int BEFlatTypeP BETypeNodeP Int BEFieldListP BackEnd -> BackEnd) void BEAbsType (BEFlatTypeP lhs); Clean (BEAbsType :: BEFlatTypeP BackEnd -> BackEnd) |