public static void main(String[] args) {
if (args.length != 1) {
printUsage();
System.exit(1);
}
File input = new File(args[0]);
if (!input.exists()) {
System.err.println("File " + args[0] + " does not exits!");
System.exit(2);
}
try {
ANTLRFileStream fileStream = new ANTLRFileStream(args[0]);
SkinnyLexer lexer = new SkinnyLexer(fileStream);
CommonTokenStream tokens = new CommonTokenStream(lexer);
SkinnyParser parser = new SkinnyParser(tokens);
ParseTree tree = parser.source();
Assembler asm = new Assembler();
ParseTreeWalker.DEFAULT.walk(asm, tree);
ParseTreeWalker.DEFAULT.walk(asm, tree);
if (!asm.hasErrors)
System.out.println(asm.getText());
} catch (IOException e) {
System.err.println("Could not open file: " + args[0]);
System.exit(2);
}
}
java类org.antlr.v4.runtime.ANTLRFileStream的实例源码
Assembler.java 文件源码
项目:SkinnyAssembler
阅读 32
收藏 0
点赞 0
评论 0
Trinity.java 文件源码
项目:Trinity
阅读 17
收藏 0
点赞 0
评论 0
private static void prettyPrint(Path filename, int indentation) throws Exception {
ANTLRInputStream input = new ANTLRFileStream(filename.toString());
ParseTree tree = parse(input).a;
PrettyPrintVisitor prettyPrinter = new PrettyPrintVisitor(indentation);
prettyPrinter.visit(tree);
System.out.print(prettyPrinter.getOutput());
}
MiniJParserTest.java 文件源码
项目:MiniJCompiler
阅读 29
收藏 0
点赞 0
评论 0
@Test
public void testTypeFailingExamples() throws IOException {
FileVisitor<Path> typeFailingFilesVisitior = new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("Testing type for file \""+file.toString()+"\"");
ANTLRFileStream antlrStream = new ANTLRFileStream(file.toString());
MiniJLexer lexer = new MiniJLexer(antlrStream);
TokenStream tokens = new CommonTokenStream(lexer);
MiniJParser parser = new MiniJParser(tokens);
ParseTree tree = parser.prog();
ASTVisitor astVisitor = new ASTVisitor();
Program program = (Program) astVisitor.visit(tree);
TypeInferenceVisitor typeInferenceVisitor = new TypeInferenceVisitor();
program.accept(typeInferenceVisitor);
TypeCheckVisitor typeCheckVisitor = new TypeCheckVisitor();
if (program.accept(typeCheckVisitor)) {
fail("The example "+file.toString()+" should have failed, but was accepted by the type checker.");
}
return super.visitFile(file, attrs);
}
};
Files.walkFileTree(EXAMPLE_PROGRAM_PATH_TYPE_FAILING, typeFailingFilesVisitior);
}
TypeCheckVisitorTest.java 文件源码
项目:MiniJCompiler
阅读 20
收藏 0
点赞 0
评论 0
@Test
public void testVisitWorkingExamples() throws Exception {
FileVisitor<Path> workingFilesVisitior = new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("Testing type checker with file \""+file.toString()+"\"");
ANTLRFileStream reader = new ANTLRFileStream(file.toString());
MiniJLexer lexer = new MiniJLexer((CharStream) reader);
TokenStream tokens = new CommonTokenStream(lexer);
MiniJParser parser = new MiniJParser(tokens);
ParseTree parseTree = parser.prog();
ASTVisitor astVisitor = new ASTVisitor();
Program ast = (Program) astVisitor.visit(parseTree);
TypeInferenceVisitor typeInferenceVisitor = new TypeInferenceVisitor();
ast.accept(typeInferenceVisitor);
TypeCheckVisitor visitor = new TypeCheckVisitor();
boolean typesCorrect = ast.accept(visitor);
if (!typesCorrect) {
for (String error : visitor.getErrors()) {
System.err.println(error);
}
}
assertTrue(typesCorrect);
return super.visitFile(file, attrs);
}
};
Files.walkFileTree(EXAMPLE_PROGRAM_PATH_WORKING, workingFilesVisitior);
}
Main.java 文件源码
项目:Q-Programming-Language
阅读 16
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws IOException {
if (args.length != 1) {
throw new RuntimeException("Please supply file as argument");
}
ANTLRInputStream ais = new ANTLRFileStream(args[0]);
QPLLexer lex = new QPLLexer(ais);
TokenStream toks = new CommonTokenStream(lex);
QPLParser parse = new QPLParser(toks);
ParseTree tree = parse.prog();
System.out.println(new ImpVisitor(Paths.get(args[0]).getParent().normalize().toString()).visit(tree));
}
Test.java 文件源码
项目:cs652
阅读 25
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws IOException {
ANTLRInputStream input = new ANTLRFileStream(args[0]);
SimpleLexer l = new SimpleLexer(input);
TokenStream tokens = new CommonTokenStream(l);
SimpleParser parser = new SimpleParser(tokens);
ParserRuleContext tree = parser.file();
System.out.println(tree.toStringTree(parser));
// tree.inspect(parser);
DefSymbolsAndScopes def = new DefSymbolsAndScopes();
ParseTreeWalker walker = new ParseTreeWalker();
walker.walk(def, tree);
}
TestFaLaLa.java 文件源码
项目:cs652
阅读 17
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRFileStream("test.falala");
FaLaLaLexer lexer = new FaLaLaLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
FaLaLaParser parser = new FaLaLaParser(tokens);
ParseTree tree = parser.prog();
System.out.println(tree.toStringTree(parser));
ParseTreeWalker walker = new ParseTreeWalker();
DefSymbols def = new DefSymbols();
walker.walk(def, tree);
}
TestLaLa.java 文件源码
项目:cs652
阅读 21
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRFileStream("bad.lala");
LaLaLexer lexer = new LaLaLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
LaLaParser parser = new LaLaParser(tokens);
ParseTree tree = parser.prog();
System.out.println(tree.toStringTree(parser));
ParseTreeWalker walker = new ParseTreeWalker();
DefSymbols def = new DefSymbols();
walker.walk(def, tree);
System.out.println(def.globals.symbols);
}
ArithTranslate.java 文件源码
项目:ReadablePlusPlus
阅读 15
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws Exception {
if (args.length == 0)
args = new String[]{"arithmeticsTest.art"};
System.out.println("parsing: " + args[0]);
arithmeticsLexer lexer = new arithmeticsLexer(new ANTLRFileStream(args[0]));
arithmeticsParser parser = new arithmeticsParser(new CommonTokenStream(lexer));
ParseTree tree = parser.line();
ArithWalk visitor = new ArithWalk();
System.out.println(visitor.visit(tree));
}
rppTranslate.java 文件源码
项目:ReadablePlusPlus
阅读 16
收藏 0
点赞 0
评论 0
public static void main(String[] args) throws Exception {
if (args.length == 0) {
args = new String[]{"rppTest.rpp"};
}
System.out.println("parsing: " + args[0]);
rppLexer lexer = new rppLexer(new ANTLRFileStream(args[0]));
rppParser parser = new rppParser(new CommonTokenStream(lexer));
ParseTree tree = parser.compilationUnit();
rppWalk visitor = new rppWalk();
System.out.println(visitor.visit(tree));
}