]> Cypherpunks repositories - gostls13.git/commitdiff
- more infrastructure
authorRobert Griesemer <gri@golang.org>
Wed, 16 Jul 2008 02:59:00 +0000 (19:59 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 16 Jul 2008 02:59:00 +0000 (19:59 -0700)
SVN=127430

usr/gri/gosrc/compilation.go
usr/gri/gosrc/globals.go
usr/gri/gosrc/go.go

index c520d00fe1cd1fdcdc31441deb116171cd22e295..9a76ae1f17133f1db6ed5dfece16a1ee9ea0c6e1 100644 (file)
@@ -7,6 +7,7 @@ package Compilation
 import Globals "globals"
 import Object "object"
 import Type "type"
+import Universe "universe"
 import Package "package"
 import Scanner "scanner"
 import Parser "parser"
@@ -16,7 +17,8 @@ export Compilation
 type Compilation struct {
   src_name string;
   pkg *Globals.Object;
-  imports *Globals.List;  // a list of *Globals.Package
+  imports [256] *Package.Package;  // TODO need open arrays
+  nimports int;
 }
 
 
@@ -48,5 +50,26 @@ func (C *Compilation) Export() {
 
 
 export Compile
-func Compile() {
+func Compile(src_name string, verbose int) {
+       comp := new(Compilation);
+       comp.src_name = src_name;
+       comp.pkg = nil;
+       comp.nimports = 0;
+       
+       src, ok := sys.readfile(src_name);
+       if !ok {
+               print "cannot open ", src_name, "\n"
+               return;
+       }
+       
+       Universe.Init();
+
+       S := new(Scanner.Scanner);
+       S.Open(src_name, src);
+
+       P := new(Parser.Parser);
+       P.Open(S, verbose);
+       
+       print "parsing ", src_name, "\n";
+       P.ParseProgram();
 }
index 1518fc1ad97210958915462d5b6d2e13c33707e9..3fd0981ebf63653c306f1ef0986f13e754082deb 100644 (file)
@@ -60,7 +60,7 @@ export Scope
 type Scope struct {
        parent *Scope;
        entries *List;
-       // entries *map[string] *Object;  // doesn't work yet
+       // entries *map[string] *Object;  // doesn't work properly
 }
 
 
index 70fb1765f36b7bb9e3bcde5bbd21a6a4cdbb557a..b9704e0ab24a424bb6cb3f0a41c5ef4b6e3b5d56 100644 (file)
@@ -5,12 +5,7 @@
 package main
 
 import Build "build"
-import Globals "globals"
-import Object "object"
-import Type "type"
-import Universe "universe"
-import Scanner "scanner"
-import Parser "parser"
+import Compilation "compilation"
 
 
 func PrintHelp() {
@@ -26,19 +21,6 @@ func PrintHelp() {
 }
 
 
-func Compile(filename, src string, verbose int) {
-       Universe.Init();
-
-       S := new(Scanner.Scanner);
-       S.Open(filename, src);
-       
-       P := new(Parser.Parser);
-       P.Open(S, verbose);
-       
-       P.ParseProgram();
-}
-
-
 func main() {
        if sys.argc() <= 1 {
                PrintHelp();
@@ -56,12 +38,6 @@ func main() {
                        continue;
                }
                
-               src, ok := sys.readfile(sys.argv(i));
-               if ok {
-                       print "parsing " + sys.argv(i) + "\n";
-                       Compile(sys.argv(i), src, verbose);
-               } else {
-                       print "error: cannot read " + sys.argv(i) + "\n";
-               }
+               Compilation.Compile(sys.argv(i), verbose);
        }
 }