aboutsummaryrefslogtreecommitdiff
path: root/backend/backend.dcl
diff options
context:
space:
mode:
authorronny2001-05-08 10:08:00 +0000
committerronny2001-05-08 10:08:00 +0000
commit2da6980c4c132561e37655862c95b7de62470f23 (patch)
tree17de347a7f272014313d8353be08047203d64a67 /backend/backend.dcl
parentsupport 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.dcl64
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;