mirror of
https://github.com/golang/go.git
synced 2025-05-28 10:51:22 +00:00
47 lines
883 B
Go
47 lines
883 B
Go
// 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;
|
|
}
|