mirror of https://github.com/golang/go.git
parent
ad863046f8
commit
63ed2b710b
|
|
@ -0,0 +1,46 @@
|
|||
// 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;
|
||||
}
|
||||
Loading…
Reference in New Issue