Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/bootstrap/build-initdg.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/bootstrap/build-initdg.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 353, Thu Jun 24 09:43:28 1999 UTC revision 354, Fri Jun 25 08:36:12 1999 UTC
# Line 13  Line 13 
13   *)   *)
14    
15  signature BUILD_INIT_DG = sig  signature BUILD_INIT_DG = sig
16      val build : GeneralParams.info -> AbsPath.t ->      val build : GeneralParams.info -> SrcPath.t ->
17          { rts: DependencyGraph.snode,          { rts: DependencyGraph.snode,
18            core: DependencyGraph.snode,            core: DependencyGraph.snode,
19            pervasive: DependencyGraph.snode,            pervasive: DependencyGraph.snode,
20            primitives: (string * DependencyGraph.snode) list,            primitives: (string * DependencyGraph.snode) list,
21            binpaths: AbsPath.t list } option            binpaths: string list } option
22  end  end
23    
24  structure BuildInitDG :> BUILD_INIT_DG = struct  structure BuildInitDG :> BUILD_INIT_DG = struct
# Line 34  Line 34 
34          val errcons = #errcons gp          val errcons = #errcons gp
35          val groupreg = #groupreg gp          val groupreg = #groupreg gp
36    
37          val context = AbsPath.sameDirContext specgroup          val context = SrcPath.sameDirContext specgroup
38          val specname = AbsPath.name specgroup          val _ = Say.vsay ["[reading init spec from ",
39          val _ = Say.vsay ["[reading init spec from ", specname, "]\n"]                            SrcPath.descr specgroup, "]\n"]
40    
41          fun work stream = let          fun work stream = let
42              val source = S.newSource (specname, 1, stream, false, errcons)              val source = S.newSource (SrcPath.osstring specgroup,
43                                          1, stream, false, errcons)
44              val sourceMap = #sourceMap source              val sourceMap = #sourceMap source
45    
46              val _ = GroupReg.register groupreg (specgroup, source)              val _ = GroupReg.register groupreg (specgroup, source)
# Line 58  Line 59 
59                       else SOME (String.tokens sep line, newpos)                       else SOME (String.tokens sep line, newpos)
60              end              end
61    
62              fun loop (split, m, bpl, pos) =              fun loop (split, m, bnl, pos) =
63                  case lineIn pos of                  case lineIn pos of
64                      NONE => (error (pos, pos) "unexpected end of file"; NONE)                      NONE => (error (pos, pos) "unexpected end of file"; NONE)
65                    | SOME (line, newpos) => let                    | SOME (line, newpos) => let
66                          val error = error (pos, newpos)                          val error = error (pos, newpos)
67                          fun sml (spec, split) = let                          fun sml (spec, split) = let
68                              val p = AbsPath.standard pcmode                              val p = SrcPath.standard pcmode
69                                  { context = context, spec = spec }                                  { context = context, spec = spec }
70                          in                          in
71                              SmlInfo.info gp { sourcepath = p,                              SmlInfo.info gp { sourcepath = p,
# Line 100  Line 101 
101                              val n = DG.SNODE { smlinfo = i,                              val n = DG.SNODE { smlinfo = i,
102                                                localimports = li,                                                localimports = li,
103                                                globalimports = gi }                                                globalimports = gi }
104                              val bpl' =                              val bnl' =
105                                  case bpl of                                  case bnl of
106                                      NONE => NONE                                      NONE => NONE
107                                    | SOME l => SOME (SmlInfo.binpath i :: l)                                    | SOME l => SOME (SmlInfo.binname i :: l)
108                          in                          in
109                              loop (split,                              loop (split,
110                                    StringMap.insert (m, name, DG.SB_SNODE n),                                    StringMap.insert (m, name, DG.SB_SNODE n),
111                                    bpl', newpos)                                    bnl', newpos)
112                          end                          end
113                      in                      in
114                          case line of                          case line of
115                              [] => loop (split, m, bpl, newpos)                              [] => loop (split, m, bnl, newpos)
116                            | ["split"] => loop (true, m, bpl, newpos)                            | ["split"] => loop (true, m, bnl, newpos)
117                            | ["nosplit"] => loop (false, m, bpl, newpos)                            | ["nosplit"] => loop (false, m, bnl, newpos)
118                            | ["start"] => loop (split, m, SOME [], newpos)                            | ["start"] => loop (split, m, SOME [], newpos)
119                            | ("bind" :: name :: file :: args)  =>                            | ("bind" :: name :: file :: args)  =>
120                                  node (name, file, args)                                  node (name, file, args)
# Line 123  Line 124 
124                                         pervasive = look_snode pervasive,                                         pervasive = look_snode pervasive,
125                                         primitives =                                         primitives =
126                                           map (fn n => (n, look_snode n)) prims,                                           map (fn n => (n, look_snode n)) prims,
127                                         binpaths = rev (getOpt (bpl, [])) }                                         binpaths = rev (getOpt (bnl, [])) }
128                            | _ => (error "malformed line"; NONE)                            | _ => (error "malformed line"; NONE)
129                      end                      end
130          in          in
131              loop (false, StringMap.empty, NONE, 1)              loop (false, StringMap.empty, NONE, 1)
132          end          end
133      in      in
134          SafeIO.perform { openIt = fn () => AbsPath.openTextIn specgroup,          SafeIO.perform { openIt = fn () => SrcPath.openTextIn specgroup,
135                           closeIt = TextIO.closeIn,                           closeIt = TextIO.closeIn,
136                           work = work,                           work = work,
137                           cleanup = fn () => () }                           cleanup = fn () => () }

Legend:
Removed from v.353  
changed lines
  Added in v.354

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0