diff options
author | ronny | 2001-05-08 10:08:00 +0000 |
---|---|---|
committer | ronny | 2001-05-08 10:08:00 +0000 |
commit | 2da6980c4c132561e37655862c95b7de62470f23 (patch) | |
tree | 17de347a7f272014313d8353be08047203d64a67 /backend/backend.dcl | |
parent | support for cases in backend (diff) |
support for cases in backend
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@395 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backend/backend.dcl')
-rw-r--r-- | backend/backend.dcl | 64 |
1 files changed, 40 insertions, 24 deletions
diff --git a/backend/backend.dcl b/backend/backend.dcl index 466e321..250972f 100644 --- a/backend/backend.dcl +++ b/backend/backend.dcl @@ -4,28 +4,30 @@ definition module backend; from StdString import String; //3.1 +:: CPtr :== Int; :: *UWorld :== Int; -:: *BackEnd :== Int; -:: BESymbolP :== Int; -:: BETypeNodeP :== Int; -:: BETypeArgP :== Int; -:: BETypeAltP :== Int; -:: BENodeP :== Int; -:: BEArgP :== Int; -:: BERuleAltP :== Int; -:: BEImpRuleP :== Int; -:: BETypeP :== Int; -:: BEFlatTypeP :== Int; -:: BETypeVarP :== Int; -:: BETypeVarListP :== Int; -:: BEConstructorListP :== Int; -:: BEFieldListP :== Int; -:: BENodeIdP :== Int; -:: BENodeDefP :== Int; -:: BEStrictNodeIdP :== Int; -:: BECodeParameterP :== Int; -:: BECodeBlockP :== Int; -:: BEStringListP :== Int; +:: *BackEnd; +:: BESymbolP; +:: BETypeNodeP; +:: BETypeArgP; +:: BETypeAltP; +:: BENodeP; +:: BEArgP; +:: BERuleAltP; +:: BEImpRuleP; +:: BETypeP; +:: BEFlatTypeP; +:: BETypeVarP; +:: BETypeVarListP; +:: BEConstructorListP; +:: BEFieldListP; +:: BENodeIdP; +:: BENodeDefP; +:: BEStrictNodeIdP; +:: BECodeParameterP; +:: BECodeBlockP; +:: BEStringListP; +:: BENodeIdListP; :: BEAnnotation :== Int; :: BEAttribution :== Int; :: BESymbKind :== Int; @@ -96,6 +98,14 @@ BEIfNode :: !BENodeP !BENodeP !BENodeP !BackEnd -> (!BENodeP,!BackEnd); // BENodeP BEIfNode (BENodeP cond,BENodeP then,BENodeP elsje); BEGuardNode :: !BENodeP !BENodeDefP !BEStrictNodeIdP !BENodeP !BENodeDefP !BEStrictNodeIdP !BENodeP !BackEnd -> (!BENodeP,!BackEnd); // BENodeP BEGuardNode (BENodeP cond,BENodeDefP thenNodeDefs,BEStrictNodeIdP thenStricts,BENodeP then,BENodeDefP elseNodeDefs,BEStrictNodeIdP elseStricts,BENodeP elsje); +BESwitchNode :: !BENodeIdP !BEArgP !BackEnd -> (!BENodeP,!BackEnd); +// BENodeP BESwitchNode (BENodeIdP nodeId,BEArgP caseNode); +BECaseNode :: !Int !BESymbolP !BENodeDefP !BEStrictNodeIdP !BENodeP !BackEnd -> (!BENodeP,!BackEnd); +// BENodeP BECaseNode (int symbolArity,BESymbolP symbol,BENodeDefP nodeDefs,BEStrictNodeIdP strictNodeIds,BENodeP node); +BEPushNode :: !Int !BESymbolP !BEArgP !BENodeIdListP !BackEnd -> (!BENodeP,!BackEnd); +// BENodeP BEPushNode (int arity,BESymbolP symbol,BEArgP arguments,BENodeIdListP nodeIds); +BEDefaultNode :: !BENodeDefP !BEStrictNodeIdP !BENodeP !BackEnd -> (!BENodeP,!BackEnd); +// BENodeP BEDefaultNode (BENodeDefP nodeDefs,BEStrictNodeIdP strictNodeIds,BENodeP node); BESelectorNode :: !BESelectorKind !BESymbolP !BEArgP !BackEnd -> (!BENodeP,!BackEnd); // BENodeP BESelectorNode (BESelectorKind selectorKind,BESymbolP fieldSymbol,BEArgP args); BEUpdateNode :: !BEArgP !BackEnd -> (!BENodeP,!BackEnd); @@ -190,6 +200,12 @@ BECodeParameters :: !BECodeParameterP !BECodeParameterP !BackEnd -> (!BECodePara // BECodeParameterP BECodeParameters (BECodeParameterP parameter,BECodeParameterP parameters); BENoCodeParameters :: !BackEnd -> (!BECodeParameterP,!BackEnd); // BECodeParameterP BENoCodeParameters (); +BENodeIdListElem :: !BENodeIdP !BackEnd -> (!BENodeIdListP,!BackEnd); +// BENodeIdListP BENodeIdListElem (BENodeIdP nodeId); +BENodeIds :: !BENodeIdListP !BENodeIdListP !BackEnd -> (!BENodeIdListP,!BackEnd); +// BENodeIdListP BENodeIds (BENodeIdListP nid,BENodeIdListP nids); +BENoNodeIds :: !BackEnd -> (!BENodeIdListP,!BackEnd); +// BENodeIdListP BENoNodeIds (); BEAbcCodeBlock :: !Bool !BEStringListP !BackEnd -> (!BECodeBlockP,!BackEnd); // BECodeBlockP BEAbcCodeBlock (int inline,BEStringListP instructions); BEAnyCodeBlock :: !BECodeParameterP !BECodeParameterP !BEStringListP !BackEnd -> (!BECodeBlockP,!BackEnd); @@ -222,9 +238,9 @@ BEDeclareDynamicTypeSymbol :: !Int !Int !BackEnd -> BackEnd; // void BEDeclareDynamicTypeSymbol (int typeIndex,int moduleIndex); BEDynamicTempTypeSymbol :: !BackEnd -> (!BESymbolP,!BackEnd); // BESymbolP BEDynamicTempTypeSymbol (); -kBEVersionCurrent:==0x02000206; -kBEVersionOldestDefinition:==0x02000204; -kBEVersionOldestImplementation:==0x02000206; +kBEVersionCurrent:==0x02000207; +kBEVersionOldestDefinition:==0x02000207; +kBEVersionOldestImplementation:==0x02000207; kBEDebug:==1; kPredefinedModuleIndex:==1; BENoAnnot:==0; |