diff options
author | johnvg | 2002-02-08 14:09:43 +0000 |
---|---|---|
committer | johnvg | 2002-02-08 14:09:43 +0000 |
commit | a9db09ecc6540e49d1413cfeaa8bd616c3ec7e83 (patch) | |
tree | adb7af295115e4bb4c4ea5299de50aeba5b948ff | |
parent | remove 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.c | 43 | ||||
-rw-r--r-- | backendC/CleanCompilerSources/dbprint.h | 3 |
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 |