MiniJParserTest.java 文件源码

java
阅读 29 收藏 0 点赞 0 评论 0

项目:MiniJCompiler 作者:
@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);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号