aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohnvg2002-02-08 14:09:43 +0000
committerjohnvg2002-02-08 14:09:43 +0000
commita9db09ecc6540e49d1413cfeaa8bd616c3ec7e83 (patch)
treeadb7af295115e4bb4c4ea5299de50aeba5b948ff
parentremove some unused code (diff)
export and extend PrintState, add File parameter to PrintRules
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1010 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r--backendC/CleanCompilerSources/dbprint.c43
-rw-r--r--backendC/CleanCompilerSources/dbprint.h3
2 files changed, 35 insertions, 11 deletions
diff --git a/backendC/CleanCompilerSources/dbprint.c b/backendC/CleanCompilerSources/dbprint.c
index 12a6a63..57323bf 100644
--- a/backendC/CleanCompilerSources/dbprint.c
+++ b/backendC/CleanCompilerSources/dbprint.c
@@ -35,7 +35,7 @@ static void PrintUnaryState (StateKind kind, ObjectKind obj, File file)
case UnderEval: FPutS ("UnderEval ", file); break;
}
switch (obj)
- { case UnknownObj: FPutS ("???", file); break;
+ { case UnknownObj: FPutS ("??? ", file); break;
case IntObj: FPutS ("Int ", file); break;
case BoolObj: FPutS ("Bool ", file); break;
case CharObj: FPutS ("Char ", file); break;
@@ -48,12 +48,33 @@ static void PrintUnaryState (StateKind kind, ObjectKind obj, File file)
}
}
-static void PrintState (StateS state, File file)
+void PrintState (StateS state, File file)
{
- return;
-
- if (state.state_arity == 1)
- PrintUnaryState (state.state_kind,state.state_object, file);
+ switch (state.state_type){
+ case TupleState:
+ {
+ int i,arity;
+
+ arity=state.state_arity;
+ FPrintF (file,"t%d",arity);
+
+ for (i=0; i<arity; ++i){
+ FPrintF (file," ");
+ PrintState (state.state_tuple_arguments[i],file);
+ }
+
+ break;
+ }
+ case RecordState:
+ FPutC ('r',file);
+ break;
+ case ArrayState:
+ FPutC ('a',file);
+ break;
+ case SimpleState:
+ PrintUnaryState (state.state_kind,state.state_object, file);
+ break;
+ }
}
void DPrintOccurrenceKind (OccurrenceKind kind, File file)
@@ -108,8 +129,10 @@ static void DPrintTypeVar (TypeVar tv, Node follow, File file)
static void PrintArgument (Args arg,Bool brackets,int n_leading_spaces,File file)
{
+ /*
PrintState (arg->arg_state, file);
-
+ */
+
if (arg->arg_node->node_kind==NodeIdNode)
DPrintNodeId (arg->arg_node->node_node_id,file);
else {
@@ -797,15 +820,15 @@ void PrintImpRule (ImpRules rule,int n_leading_spaces,File file)
PrintRuleAlts (rule->rule_alts,n_leading_spaces,file);
}
-void PrintRules (ImpRules rules)
+void PrintRules (ImpRules rules,File file)
{
ImpRuleS *rule;
for_l (rule,rules,rule_next){
- PrintImpRule (rule,4,StdOut);
+ PrintImpRule (rule,4,file);
if (rule->rule_next!=NULL)
- FPutC ('\n',StdOut);
+ FPutC ('\n',file);
}
}
diff --git a/backendC/CleanCompilerSources/dbprint.h b/backendC/CleanCompilerSources/dbprint.h
index e87800e..3eb0f3c 100644
--- a/backendC/CleanCompilerSources/dbprint.h
+++ b/backendC/CleanCompilerSources/dbprint.h
@@ -11,8 +11,9 @@ extern void DPrintNodeId (NodeId nid, File file);
extern void DPrintNodeIdS (char *s,NodeId nid, File file);
extern void DPrintOccurrenceKind (OccurrenceKind kind, File file);
extern void PrintTypeAlt (TypeAlts type_alts, File file, Bool with_equats);
+extern void PrintState (StateS state, File file);
-extern void PrintRules (ImpRules rules);
+extern void PrintRules (ImpRules rules,File file);
#ifdef _COMPSTATS_
extern unsigned long