use of kalang.compiler.KalangCompiler in project kalang by kasonyang.
the class KalangCompilerTest method test.
@Test
public void test() {
KalangCompiler kc = new KalangCompiler();
kc.addSource("Test", "class{ }", "Test.kl");
kc.compile();
CompilationUnit unit = kc.getCompilationUnit("Test");
assert unit != null;
CommonTokenStream ts = unit.getTokenStream();
// the tokens contains tokens in all channels
List<Token> tokens = ts.getTokens();
assertEquals(5, ts.size());
testTokenNavigator(tokens.toArray(new Token[0]), unit.getAstBuilder().getParseTree());
}
use of kalang.compiler.KalangCompiler in project kalang by kasonyang.
the class FileSystemCompiler method compile.
public void compile() throws IOException {
if (outputDir == null) {
throw new IllegalStateException("output diretory is null");
}
URLClassLoader pathClassLoader = new URLClassLoader(classPaths.toArray(new URL[classPaths.size()]), this.classLoader);
AstLoader astLoader = new JavaAstLoader(this.parentAstLoader, pathClassLoader);
KalangCompiler compiler = new KalangCompiler(astLoader) {
@Override
public CodeGenerator createCodeGenerator(CompilationUnit compilationUnit) {
FileSystemOutputManager om = new FileSystemOutputManager(outputDir, extension);
return new ClassWriter(om);
}
};
compiler.setConfiguration(configuration);
for (Map.Entry<String, File> e : sourceFiles.entrySet()) {
String className = e.getKey();
File file = e.getValue();
compiler.addSource(className, FileUtils.readFileToString(file), file.getName());
}
FileSystemSourceLoader sourceLoader = new FileSystemSourceLoader(sourcePaths.toArray(new File[sourcePaths.size()]), new String[] { "kl", "kalang" });
compiler.setSourceLoader(sourceLoader);
if (diagnosisHandler != null) {
compiler.setDiagnosisHandler(diagnosisHandler);
}
compiler.compile();
}
Aggregations