30 |
val currentDir = AbsPath.dir group |
val currentDir = AbsPath.dir group |
31 |
val context = AbsPath.relativeContext (AbsPath.dir group) |
val context = AbsPath.relativeContext (AbsPath.dir group) |
32 |
val filename = AbsPath.name group |
val filename = AbsPath.name group |
33 |
|
val _ = Say.vsay (concat ["[scanning ", filename, "]\n"]) |
34 |
val stream = TextIO.openIn filename |
val stream = TextIO.openIn filename |
35 |
val errcons = |
val errcons = |
36 |
{ linewidth = !P.linewidth, flush = P.flush, consumer = P.say } |
{ linewidth = !P.linewidth, flush = P.flush, consumer = P.say } |
49 |
NONE => (#anyErrors source := true; CMSemant.emptyGroup) |
NONE => (#anyErrors source := true; CMSemant.emptyGroup) |
50 |
| SOME res => res |
| SOME res => res |
51 |
|
|
52 |
fun doMember (p, p1, p2, c) = |
fun doMember (p, p1, p2, c, e) = |
53 |
CMSemant.member (recParse (p1, p2)) { sourcepath = p, |
CMSemant.member (recParse (p1, p2)) { sourcepath = p, |
54 |
group = group, |
group = group, |
55 |
class = c } |
class = c, |
56 |
|
error = e } |
57 |
|
|
58 |
(* checking for cycles among groups and printing them nicely *) |
(* checking for cycles among groups and printing them nicely *) |
59 |
val _ = let |
val _ = let |