use of io.github.wysohn.triggerreactor.core.script.lexer.LexerException in project TriggerReactor by wysohn.
the class Trigger method init.
/**
* @throws IOException low level exception from Lexer
* @throws LexerException throws if lexical analysis failed
* @throws ParserException throws if parsing failed
* @throws TriggerInitFailedException
*/
public void init() throws TriggerInitFailedException {
try {
if (script == null) {
throw new NullPointerException("init() was invoked, yet 'script' was null. Make sure to override " + "init() method to in order to construct a customized Trigger.");
}
Charset charset = StandardCharsets.UTF_8;
Lexer lexer = new Lexer(script, charset);
Parser parser = new Parser(lexer);
root = parser.parse(true);
List<Warning> warnings = parser.getWarnings();
AbstractTriggerManager.reportWarnings(warnings, this);
executorMap = TriggerReactorCore.getInstance().getExecutorManager().getBackedMap();
placeholderMap = TriggerReactorCore.getInstance().getPlaceholderManager().getBackedMap();
gvarMap = TriggerReactorCore.getInstance().getVariableManager().getGlobalVariableAdapter();
} catch (Exception ex) {
throw new TriggerInitFailedException("Failed to initialize Trigger [" + this.getClass().getSimpleName() + " -- " + info + "]!", ex);
}
}
use of io.github.wysohn.triggerreactor.core.script.lexer.LexerException in project TriggerReactor by wysohn.
the class TestInterpreter method testPlaceholderNull.
@Test
public void testPlaceholderNull() throws IOException, LexerException, ParserException, InterpreterException {
Charset charset = StandardCharsets.UTF_8;
String text = "a = $merp";
Lexer lexer = new Lexer(text, charset);
Parser parser;
parser = new Parser(lexer);
Node root = parser.parse();
Map<String, Placeholder> placeholderMap = new HashMap<>();
placeholderMap.put("merp", new Placeholder() {
@Override
public Object parse(Timings.Timing timing, Object context, Map<String, Object> vars, Object... args) throws Exception {
return null;
}
});
Interpreter interpreter = new Interpreter(root);
interpreter.setPlaceholderMap(placeholderMap);
interpreter.startWithContext(null);
assertEquals(null, interpreter.getVars().get("a"));
}
use of io.github.wysohn.triggerreactor.core.script.lexer.LexerException in project TriggerReactor by wysohn.
the class Parser method nextToken.
private void nextToken() throws IOException, ParserException {
try {
token = lexer.getToken();
if (showWarnings && token != null) {
int row = lexer.getRow();
Type type = token.type;
String value = String.valueOf(token.value);
if (type == null || value == null)
return;
if (deprecationSupervisors.stream().anyMatch(deprecationSupervisor -> deprecationSupervisor.isDeprecated(type, value))) {
this.warnings.add(new DeprecationWarning(row, value, lexer.getScriptLines()[row - 1]));
}
}
} catch (LexerException lex) {
ParserException pex = new ParserException("Error occured while processing a token after " + token);
pex.initCause(lex);
throw pex;
}
}
Aggregations