package soot.JastAddJ;
import java.util.HashSet;import java.util.LinkedHashSet;import java.io.File;import java.util.*;import beaver.*;import java.util.ArrayList;import java.util.zip.*;import java.io.*;import java.io.FileNotFoundException;import java.util.Collection;import soot.*;import soot.util.*;import soot.jimple.*;import soot.coffi.ClassFile;import soot.coffi.method_info;import soot.coffi.CONSTANT_Utf8_info;import soot.tagkit.SourceFileTag;import soot.coffi.CoffiMethodSource;
public class Frontend extends java.lang.Object {
// Declared in FrontendMain.jrag at line 12
protected Program program;
// Declared in FrontendMain.jrag at line 14
protected Frontend() {
program = new Program();
program.state().reset();
}
// Declared in FrontendMain.jrag at line 19
public boolean process(String[] args, BytecodeReader reader, JavaParser parser) {
program.initBytecodeReader(reader);
program.initJavaParser(parser);
initOptions();
processArgs(args);
Collection files = program.options().files();
if(program.options().hasOption("-version")) {
printVersion();
return false;
}
if(program.options().hasOption("-help") || files.isEmpty()) {
printUsage();
return false;
}
try {
for(Iterator iter = files.iterator(); iter.hasNext(); ) {
String name = (String)iter.next();
if(!new File(name).exists())
System.out.println("WARNING: file \"" + name + "\" does not exist");
program.addSourceFile(name);
}
for(Iterator iter = program.compilationUnitIterator(); iter.hasNext(); ) {
CompilationUnit unit = (CompilationUnit)iter.next();
if(unit.fromSource()) {
Collection errors = unit.parseErrors();
Collection warnings = new LinkedList();
// compute static semantic errors when there are no parse errors or
// the recover from parse errors option is specified
if(errors.isEmpty() || program.options().hasOption("-recover"))
unit.errorCheck(errors, warnings);
if(!errors.isEmpty()) {
processErrors(errors, unit);
return false;
}
else {
processWarnings(warnings, unit);
processNoErrors(unit);
}
}
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
return true;
}
// Declared in FrontendMain.jrag at line 71
protected void initOptions() {
Options options = program.options();
options.initOptions();
options.addKeyOption("-version");
options.addKeyOption("-print");
options.addKeyOption("-g");
options.addKeyOption("-g:none");
options.addKeyOption("-g:lines,vars,source");
options.addKeyOption("-nowarn");
options.addKeyOption("-verbose");
options.addKeyOption("-deprecation");
options.addKeyValueOption("-classpath");
options.addKeyValueOption("-sourcepath");
options.addKeyValueOption("-bootclasspath");
options.addKeyValueOption("-extdirs");
options.addKeyValueOption("-d");
options.addKeyValueOption("-encoding");
options.addKeyValueOption("-source");
options.addKeyValueOption("-target");
options.addKeyOption("-help");
options.addKeyOption("-O");
options.addKeyOption("-J-Xmx128M");
options.addKeyOption("-recover");
}
// Declared in FrontendMain.jrag at line 95
protected void processArgs(String[] args) {
program.options().addOptions(args);
}
// Declared in FrontendMain.jrag at line 99
protected void processErrors(Collection errors, CompilationUnit unit) {
System.out.println("Errors:");
for(Iterator iter2 = errors.iterator(); iter2.hasNext(); ) {
System.out.println(iter2.next());
}
}
// Declared in FrontendMain.jrag at line 105
protected void processWarnings(Collection warnings, CompilationUnit unit) {
for(Iterator iter2 = warnings.iterator(); iter2.hasNext(); ) {
System.out.println(iter2.next());
}
}
// Declared in FrontendMain.jrag at line 110
protected void processNoErrors(CompilationUnit unit) {
}
// Declared in FrontendMain.jrag at line 113
protected void printUsage() {
printVersion();
System.out.println(
"\n" + name() + "\n\n" +
"Usage: java " + name() + " <options> <source files>\n" +
" -verbose Output messages about what the compiler is doing\n" +
" -classpath <path> Specify where to find user class files\n" +
" -sourcepath <path> Specify where to find input source files\n" +
" -bootclasspath <path> Override location of bootstrap class files\n" +
" -extdirs <dirs> Override location of installed extensions\n" +
" -d <directory> Specify where to place generated class files\n" +
" -help Print a synopsis of standard options\n" +
" -version Print version information\n"
);
}
// Declared in FrontendMain.jrag at line 129
protected void printVersion() {
System.out.println(name() + " " + url() + " Version " + version());
}
// Declared in FrontendMain.jrag at line 133
protected String name() {
return "Java1.4Frontend";
}
// Declared in FrontendMain.jrag at line 136
protected String url() {
return "(http://jastadd.cs.lth.se)";
}
// Declared in FrontendMain.jrag at line 140
protected String version() {
return "R20070504";
}
}