Update of /cvsroot/hcoop/domtool2/src
In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv11070/src

Modified Files:
        autodoc.sml defaults.sig defaults.sml domtool.grm eval.sml 
        main-client.sml main.sig main.sml 
Log Message:
Saving environment variables across file executions

Index: defaults.sml
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/defaults.sml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** defaults.sml        3 Sep 2006 19:38:36 -0000       1.1
--- defaults.sml        24 Feb 2008 20:10:15 -0000      1.2
***************
*** 36,43 ****
        | SOME _ => raise Fail "Duplicate default environment variable"
  
! fun tInit () = (TAction ((CRoot, dmy),
!                        !defaultT,
!                        StringMap.empty),
!               dmy)
  
  fun eInit () = SM.map (fn f => f ()) (!defaultV)
--- 36,60 ----
        | SOME _ => raise Fail "Duplicate default environment variable"
  
! fun allSets (e, _) =
!     case e of
!       ESkip => true
!       | ESet _ => true
!       | ESeq es => List.all allSets es
!       | _ => false
! 
! val dmy = ErrorMsg.dummyLoc
! 
! fun bodyType (_, _, SOME e) =
!     if allSets e then
!       (CPrefix (CRoot, dmy), dmy)
!     else
!       (CRoot, dmy)
!   | bodyType _ = (CRoot, dmy)
! 
! fun tInit p =
!     (TAction (bodyType p,
!             !defaultT,
!             StringMap.empty),
!      dmy)
  
  fun eInit () = SM.map (fn f => f ()) (!defaultV)

Index: autodoc.sml
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/autodoc.sml,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** autodoc.sml 16 Dec 2007 20:22:03 -0000      1.8
--- autodoc.sml 24 Feb 2008 20:10:15 -0000      1.9
***************
*** 37,41 ****
            G
        else
!           Tycheck.checkFile G (Defaults.tInit ()) prog
      end
  
--- 37,41 ----
            G
        else
!           Tycheck.checkFile G (Defaults.tInit prog) prog
      end
  

Index: defaults.sig
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/defaults.sig,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** defaults.sig        3 Sep 2006 19:38:36 -0000       1.1
--- defaults.sig        24 Feb 2008 20:10:15 -0000      1.2
***************
*** 22,26 ****
      val registerDefault : string * Ast.typ * (unit -> Ast.exp) -> unit
  
!     val tInit : unit -> Ast.typ
      val eInit : unit -> Env.env_vars
  end
--- 22,26 ----
      val registerDefault : string * Ast.typ * (unit -> Ast.exp) -> unit
  
!     val tInit : Ast.file -> Ast.typ
      val eInit : unit -> Env.env_vars
  end

Index: main.sig
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/main.sig,v
retrieving revision 1.45
retrieving revision 1.46
diff -C2 -d -r1.45 -r1.46
*** main.sig    17 Nov 2007 17:44:11 -0000      1.45
--- main.sig    24 Feb 2008 20:10:15 -0000      1.46
***************
*** 24,28 ****
      val setupUser : unit -> string
  
!     val check : string -> Env.env * Ast.exp option
      val check' : Env.env -> string -> Env.env
      val checkDir : string -> unit
--- 24,28 ----
      val setupUser : unit -> string
  
!     val check : Env.env -> string -> Env.env * Ast.exp option
      val check' : Env.env -> string -> Env.env
      val checkDir : string -> unit
***************
*** 30,35 ****
      val basis : unit -> Env.env
  
!     val reduce : string -> Ast.exp option
!     val eval : string -> unit
  
      val request : string -> unit
--- 30,35 ----
      val basis : unit -> Env.env
  
!     val reduce : Env.env -> string -> (Env.env * Ast.exp) option
!     val eval : Env.env -> Env.env_vars -> string -> Env.env * Env.env_vars
  
      val request : string -> unit

Index: domtool.grm
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/domtool.grm,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** domtool.grm 15 Dec 2007 20:17:26 -0000      1.16
--- domtool.grm 24 Feb 2008 20:10:15 -0000      1.17
***************
*** 80,84 ****
  %%
  
! file   : docOpt decls expOpt               (docOpt, decls, expOpt)
  
  decls  :                                   ([])
--- 80,84 ----
  %%
  
! file   : docOpt decls expOpt SEMIopt       (docOpt, decls, expOpt)
  
  decls  :                                   ([])
***************
*** 97,102 ****
  
  expOpt :                                   (NONE)
!        | exp                               (SOME (ELocal (exp, (ESkip, 
(expleft, expright))),
!                                                 (expleft, expright)))
  
  
--- 97,101 ----
  
  expOpt :                                   (NONE)
!        | exp                               (SOME exp)
  
  

Index: eval.sml
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/eval.sml,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** eval.sml    15 Dec 2007 20:17:26 -0000      1.9
--- eval.sml    24 Feb 2008 20:10:15 -0000      1.10
***************
*** 119,121 ****
--- 119,123 ----
      end
  
+ val exec' = fn evs => fn e => conjoin (evs, exec' evs e)
+ 
  end

Index: main-client.sml
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/main-client.sml,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** main-client.sml     17 Nov 2007 13:51:22 -0000      1.8
--- main-client.sml     24 Feb 2008 20:10:15 -0000      1.9
***************
*** 34,38 ****
  val (doit, doitDir, args) =
      case CommandLine.arguments () of
!       "-tc" :: args => (fn fname => (Main.setupUser (); ignore (Main.check 
fname)),
                          Main.checkDir,
                          args)
--- 34,38 ----
  val (doit, doitDir, args) =
      case CommandLine.arguments () of
!       "-tc" :: args => (fn fname => (Main.setupUser (); ignore (Main.check 
(Main.basis ()) fname)),
                          Main.checkDir,
                          args)

Index: main.sml
===================================================================
RCS file: /cvsroot/hcoop/domtool2/src/main.sml,v
retrieving revision 1.97
retrieving revision 1.98
diff -C2 -d -r1.97 -r1.98
*** main.sml    1 Jan 2008 22:27:58 -0000       1.97
--- main.sml    24 Feb 2008 20:10:16 -0000      1.98
***************
*** 26,33 ****
  
  fun init () = Acl.read Config.aclFile
!           
  fun check' G fname =
      let
        val prog = Parse.parse fname
      in
        if !ErrorMsg.anyErrors then
--- 26,46 ----
  
  fun init () = Acl.read Config.aclFile
! 
! fun isLib fname = OS.Path.file fname = "lib.dtl"
! 
! fun wrapFile (fname, file) =
!     case (isLib fname, file) of
!       (true, (comment, ds, SOME e)) =>
!       let
!           val (_, loc) = e
!       in
!           (comment, ds, SOME (ELocal (e, (ESkip, loc)), loc))
!       end
!       | _ => file
! 
  fun check' G fname =
      let
        val prog = Parse.parse fname
+       val prog = wrapFile (fname, prog)
      in
        if !ErrorMsg.anyErrors then
***************
*** 35,39 ****
        else
            (Option.app (Unused.check G) (#3 prog);
!            Tycheck.checkFile G (Defaults.tInit ()) prog)
      end
  
--- 48,52 ----
        else
            (Option.app (Unused.check G) (#3 prog);
!            Tycheck.checkFile G (Defaults.tInit prog) prog)
      end
  
***************
*** 65,74 ****
      end
  
! fun check fname =
      let
        val _ = ErrorMsg.reset ()
        val _ = Env.preTycheck ()
- 
-       val b = basis ()
      in
        if !ErrorMsg.anyErrors then
--- 78,87 ----
      end
  
! (* val b = basis () *)
! 
! fun check G fname =
      let
        val _ = ErrorMsg.reset ()
        val _ = Env.preTycheck ()
      in
        if !ErrorMsg.anyErrors then
***************
*** 79,82 ****
--- 92,96 ----
                val _ = ErrorMsg.reset ()
                val prog = Parse.parse fname
+               val prog = wrapFile (fname, prog)
            in
                if !ErrorMsg.anyErrors then
***************
*** 84,93 ****
                else
                    let
!                       val G' = Tycheck.checkFile b (Defaults.tInit ()) prog
                    in
                        if !ErrorMsg.anyErrors then
                            raise ErrorMsg.Error
                        else
!                           (Option.app (Unused.check b) (#3 prog);
                             (G', #3 prog))
                    end
--- 98,107 ----
                else
                    let
!                       val G' = Tycheck.checkFile G (Defaults.tInit prog) prog
                    in
                        if !ErrorMsg.anyErrors then
                            raise ErrorMsg.Error
                        else
!                           (Option.app (Unused.check G) (#3 prog);
                             (G', #3 prog))
                    end
***************
*** 151,157 ****
       checkDir' dname)
  
! fun reduce fname =
      let
!       val (G, body) = check fname
      in
        if !ErrorMsg.anyErrors then
--- 165,171 ----
       checkDir' dname)
  
! fun reduce G fname =
      let
!       val (G, body) = check G fname
      in
        if !ErrorMsg.anyErrors then
***************
*** 167,192 ****
                                          PD.space 1,
                                          p_exp body']))*)
!                   SOME body'
                end
              | _ => NONE
      end
  
! fun eval fname =
!     case reduce fname of
!       (SOME body') =>
!       if !ErrorMsg.anyErrors then
!           raise ErrorMsg.Error
!       else
!           Eval.exec (Defaults.eInit ()) body'
!       | NONE => ()
  
! fun eval' fname =
!     case reduce fname of
!       (SOME body') =>
        if !ErrorMsg.anyErrors then
            raise ErrorMsg.Error
        else
!           ignore (Eval.exec' (Defaults.eInit ()) body')
!       | NONE => ()
  
  val dispatcher =
--- 181,203 ----
                                          PD.space 1,
                                          p_exp body']))*)
!                   SOME (G, body')
                end
              | _ => NONE
      end
  
! (*(Defaults.eInit ())*)
  
! fun eval G evs fname =
!     case reduce G fname of
!       SOME (G, body') =>
        if !ErrorMsg.anyErrors then
            raise ErrorMsg.Error
        else
!           let
!               val evs' = Eval.exec' evs body'
!           in
!               (G, evs')
!           end
!       | NONE => (G, evs)
  
  val dispatcher =
***************
*** 233,237 ****
  fun request fname =
      let
!       val (user, bio) = requestBio (fn () => ignore (check fname))
  
        val inf = TextIO.openIn fname
--- 244,248 ----
  fun request fname =
      let
!       val (user, bio) = requestBio (fn () => ignore (check (basis ()) fname))
  
        val inf = TextIO.openIn fname
***************
*** 1018,1021 ****
--- 1029,1035 ----
                        val files = loop []
                        val (_, files) = Order.order (SOME b) files
+ 
+                       fun checker' (file, (G, evs)) =
+                           checker G evs file
                    in
                        if !ErrorMsg.anyErrors then
***************
*** 1025,1029 ****
                        else
                            ();
!                       app checker files
                    end
                else if String.isSuffix "_admin" user then
--- 1039,1043 ----
                        else
                            ();
!                       ignore (foldl checker' (basis (), Defaults.eInit ()) 
files)
                    end
                else if String.isSuffix "_admin" user then
***************
*** 1066,1071 ****
      end
  
! val regenerate = regenerateEither false eval'
! val regenerateTc = regenerateEither true (ignore o check)
  
  fun rmuser user =
--- 1080,1087 ----
      end
  
! val regenerate = regenerateEither false eval
! val regenerateTc = regenerateEither true
!                                   (fn G => fn evs => fn file =>
!                                                         (#1 (check G file), 
evs))
  
  fun rmuser user =
***************
*** 1166,1170 ****
                             val outname = OS.FileSys.tmpName ()
  
!                            fun doOne code =
                                 let
                                     val outf = TextIO.openOut outname
--- 1182,1186 ----
                             val outname = OS.FileSys.tmpName ()
  
!                            fun doOne (code, (G, evs)) =
                                 let
                                     val outf = TextIO.openOut outname
***************
*** 1172,1180 ****
                                     TextIO.output (outf, code);
                                     TextIO.closeOut outf;
!                                    eval' outname
                                 end
                         in
                             doIt (fn () => (Env.pre ();
!                                            app doOne codes;
                                             Env.post ();
                                             Msg.send (bio, MsgOk);
--- 1188,1196 ----
                                     TextIO.output (outf, code);
                                     TextIO.closeOut outf;
!                                    eval G evs outname
                                 end
                         in
                             doIt (fn () => (Env.pre ();
!                                            ignore (foldl doOne (basis (), 
Defaults.eInit ()) codes);
                                             Env.post ();
                                             Msg.send (bio, MsgOk);


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
hcoop-cvs mailing list
hcoop-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hcoop-cvs

Reply via email to