diff options
author | zweije | 2001-08-13 13:46:05 +0000 |
---|---|---|
committer | zweije | 2001-08-13 13:46:05 +0000 |
commit | 8bf5e84a982ecbe2720dc4473f8420c8ea6af2a4 (patch) | |
tree | a0d1a6ab38f0755205743eaf2716f9dffaefd237 /sucl/cli.icl | |
parent | This commit was generated by cvs2svn to compensate for changes in r614, (diff) |
This commit was generated by cvs2svn to compensate for changes in r616,
which included commits to RCS files with non-trunk default branches.
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@617 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'sucl/cli.icl')
-rw-r--r-- | sucl/cli.icl | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/sucl/cli.icl b/sucl/cli.icl index 5ce09a6..0f2d2c9 100644 --- a/sucl/cli.icl +++ b/sucl/cli.icl @@ -2,11 +2,12 @@ implementation module cli // $Id$ -import absmodule -import coreclean import law +import coreclean import strat +import absmodule import rule +import dnc import basic import StdEnv @@ -117,12 +118,18 @@ Abstype implementation. > stripexports main (tdefs,(es,as,ts,rs)) = (tdefs,([User m i|User m i<-es;m=main],as,ts,rs)) > exports (tdefs,(es,as,ts,rs)) = es +*/ + +exports :: Cli -> [SuclSymbol] +exports m = m.exportedsymbols +/* > typerule (tdefs,(es,as,ts,rs)) = fst.maxtypeinfo ts */ typerule :: Cli SuclSymbol -> Rule SuclTypeSymbol SuclTypeVariable -typerule _ _ = undef +typerule m sym += fst (maxtypeinfo m.typerules sym) /* > rules (tdefs,(es,as,ts,rs)) = foldmap Present Absent rs @@ -166,7 +173,12 @@ maxtypeinfo defs sym = extendfn defs coretypeinfo sym > constrs ((tes,tas,tcs),defs) = tcs > complete ((tes,tas,tcs),(es,as,ts,rs)) = mkclicomplete tcs (fst.maxtypeinfo ts) +*/ + +complete :: Cli -> [SuclSymbol] -> Bool +complete m = mkclicomplete m.typeconstructors (fst o maxtypeinfo m.typerules) +/* > showcli = printcli > mkclicomplete @@ -181,7 +193,24 @@ maxtypeinfo defs sym = extendfn defs coretypeinfo sym > = foldmap superset (corecomplete tsym) tcs tsym syms, otherwise > where trule = typerule (hd syms) > (tdef,(tsym,targs)) = dnc (const "in mkclicomplete") (rulegraph trule) (rhs trule) +*/ + +mkclicomplete :: + [(SuclTypeSymbol,[SuclSymbol])] + (SuclSymbol->Rule SuclTypeSymbol tvar) + [SuclSymbol] + -> Bool + | == tvar + +mkclicomplete tcs typerule [] = False +mkclicomplete tcs typerule syms +| not tdef + = False += foldmap superset (corecomplete tsym) tcs tsym syms + where trule = typerule (hd syms) + (tdef,(tsym,_)) = dnc (const "in mkclicomplete") (rulegraph trule) (ruleroot trule) +/* ------------------------------------------------------------------------ > printcli :: module symbol node typesymbol typenode -> [char] |