package me.august.lumen;
import me.august.lumen.compile.CompileBuildContext;
import me.august.lumen.compile.codegen.BuildContext;
import me.august.lumen.compile.parser.LumenParser;
import me.august.lumen.compile.parser.ast.ProgramNode;
import me.august.lumen.compile.parser.ast.expr.Expression;
import me.august.lumen.compile.scanner.LumenScanner;
import me.august.lumen.compile.scanner.TokenSource;
import java.io.IOException;
import java.io.InputStream;
public class Util {
public static String readResource(String file) {
return readResource(file, Util.class);
}
public static String readResource(String file, Class<?> cls) {
InputStream in = cls.getResourceAsStream(file);
StringBuilder sb = new StringBuilder();
int c;
try {
while ((c = in.read()) != -1) {
sb.append((char) c);
}
} catch (IOException e) { return null; }
return sb.toString();
}
public static ProgramNode parse(String src) {
return createParser(src).parseProgram();
}
public static Expression parseExpression(String src) {
return createParser(src).parseExpression();
}
private static LumenParser createParser(String src) {
BuildContext context = new CompileBuildContext(src);
TokenSource lexer = new LumenScanner(src);
return new LumenParser(lexer, context);
}
}