--- /dev/null
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package Compilation
+
+import Scanner "scanner"
+import Parser "parser"
+import AST "ast"
+
+
+
+export type Flags struct {
+ verbose bool;
+ sixg bool;
+ deps bool;
+ columns bool;
+ testmode bool;
+ tokenchan bool;
+}
+
+
+type Compilation struct {
+ prog *AST.Program;
+ nerrors int;
+}
+
+
+export func Compile(src_file, src string, flags *Flags) *Compilation {
+ var scanner Scanner.Scanner;
+ scanner.Open(src_file, src, flags.columns, flags.testmode);
+
+ var tstream *<-chan *Scanner.Token;
+ if flags.tokenchan {
+ tstream = scanner.TokenStream();
+ }
+
+ var parser Parser.Parser;
+ parser.Open(flags.verbose, flags.sixg, &scanner, tstream);
+
+ C := new(Compilation);
+ C.prog = parser.ParseProgram();
+ C.nerrors = scanner.nerrors;
+
+ return C;
+}