2008-07-15 16:37:14 -06:00
|
|
|
// 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
|
|
|
|
|
2008-07-29 20:02:49 -06:00
|
|
|
import Utils "utils"
|
2008-07-15 16:37:14 -06:00
|
|
|
import Globals "globals"
|
|
|
|
import Object "object"
|
|
|
|
import Type "type"
|
2008-07-15 20:59:00 -06:00
|
|
|
import Universe "universe"
|
2008-07-15 16:37:14 -06:00
|
|
|
import Scanner "scanner"
|
2008-07-18 18:18:29 -06:00
|
|
|
import AST "ast"
|
2008-07-15 16:37:14 -06:00
|
|
|
import Parser "parser"
|
2008-07-16 18:00:48 -06:00
|
|
|
import Export "export"
|
2008-07-30 14:01:28 -06:00
|
|
|
import Printer "printer"
|
2008-07-30 22:26:15 -06:00
|
|
|
import Verifier "verifier"
|
2008-07-15 16:37:14 -06:00
|
|
|
|
|
|
|
|
2008-08-04 16:37:47 -06:00
|
|
|
export func Compile(comp *Globals.Compilation, file_name string) {
|
2008-07-17 19:02:10 -06:00
|
|
|
src, ok := sys.readfile(file_name);
|
2008-07-15 20:59:00 -06:00
|
|
|
if !ok {
|
2008-07-17 19:02:10 -06:00
|
|
|
print "cannot open ", file_name, "\n"
|
2008-07-15 20:59:00 -06:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2008-07-17 19:02:10 -06:00
|
|
|
scanner := new(Scanner.Scanner);
|
|
|
|
scanner.Open(file_name, src);
|
2008-07-15 20:59:00 -06:00
|
|
|
|
2008-07-17 19:02:10 -06:00
|
|
|
parser := new(Parser.Parser);
|
2008-07-30 18:36:03 -06:00
|
|
|
parser.Open(comp, scanner);
|
2008-07-17 19:02:10 -06:00
|
|
|
|
|
|
|
parser.ParseProgram();
|
|
|
|
if parser.S.nerrors > 0 {
|
|
|
|
return;
|
|
|
|
}
|
2008-07-15 20:59:00 -06:00
|
|
|
|
2008-07-30 22:26:15 -06:00
|
|
|
if !comp.flags.semantic_checks {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
Verifier.Verify(comp);
|
|
|
|
|
|
|
|
if comp.flags.print_export {
|
2008-08-04 11:19:36 -06:00
|
|
|
Printer.PrintObject(comp, comp.pkg_list[0].obj, false);
|
2008-07-30 18:36:03 -06:00
|
|
|
}
|
2008-07-30 22:26:15 -06:00
|
|
|
|
|
|
|
Export.Export(comp, file_name);
|
2008-07-15 16:37:14 -06:00
|
|
|
}
|