use of net.sourceforge.processdash.data.compiler.parser.Parser in project processdash by dtuma.
the class FindLastExpression method compileVal.
public static PValue compileVal(String expression) throws CompilationException {
try {
// Create a Parser instance.
Parser p = new Parser(new Lexer(new PushbackReader(new StringReader("[foo] = " + expression + ";"), 1024)));
// Parse the input
Start tree = p.parse();
// get the expression and return it
FindLastExpression search = new FindLastExpression();
tree.apply(search);
return search.expression;
} catch (Exception e) {
throw new CompilationException("Error while compiling: " + e);
}
}
use of net.sourceforge.processdash.data.compiler.parser.Parser in project processdash by dtuma.
the class DataRepository method loadDatafile.
private String loadDatafile(String filename, Reader datafile, Map dest, boolean followIncludes, boolean close) throws FileNotFoundException, IOException, InvalidDatafileFormat {
//debug("loadDatafile("+filename+")");
// Initialize data, file, and read buffer.
BufferedReader in = new BufferedReader(datafile);
FileLoader loader = new FileLoader(dest, followIncludes);
String defineDecls = null;
if (filename != null)
defineDecls = (String) defineDeclarations.get(filename);
defineDecls = prependGlobalDefineDeclarations(defineDecls);
try {
CppFilterReader readIn = new CppFilterReader(in, defineDecls);
Parser p = new Parser(new Lexer(new PushbackReader(readIn, 1024)));
// Parse the file.
Start tree = p.parse();
// Apply the file loader.
tree.apply(loader);
} catch (ParserException pe) {
String message = "Could not parse " + filename + "; " + pe.getMessage();
TemplateLoader.logTemplateError(message);
throw new InvalidDatafileFormat(message);
} catch (LexerException le) {
String message = "Could not parse " + filename + "; " + le.getMessage();
TemplateLoader.logTemplateError(message);
throw new InvalidDatafileFormat(message);
} catch (LoadingException load) {
Exception root = load.getRoot();
if (root instanceof FileNotFoundException)
throw (FileNotFoundException) root;
if (root instanceof IOException)
throw (IOException) root;
if (root instanceof InvalidDatafileFormat)
throw (InvalidDatafileFormat) root;
System.err.println("Unusual exception when loading file: " + root);
root.printStackTrace();
throw new IOException(root.getMessage());
} finally {
if (close)
in.close();
}
return loader.getInheritedDatafile();
}
Aggregations