use of de.be4.ltl.core.ctlparser.node.Start in project prob2 by bendisposto.
the class RulesMachineRun method start.
public void start() {
logger.info("Starting rules machine run: {}", this.runnerFile.getAbsolutePath());
stopWatch.start(Timer.PARSING);
boolean hasParseErrors = parseAndTranslateRulesProject();
logger.info("Time to parse rules project: {} ms", stopWatch.stop(Timer.PARSING));
if (hasParseErrors) {
logger.error("RULES_MACHINE has errors!");
return;
}
this.executeRun = rulesMachineRunner.createRulesMachineExecuteRun(this.rulesProject, runnerFile, this.proBCorePreferences, continueAfterErrors, this.getStateSpace());
try {
stopWatch.start(Timer.EXECUTE_RUN);
logger.info("Start execute ...");
this.executeRun.start();
logger.info("Execute run finished. Time: {} ms", stopWatch.stop(Timer.EXECUTE_RUN));
} catch (ProBError e) {
logger.error("ProBError: {}", e.getMessage());
if (executeRun.getExecuteModelCommand() != null) {
try {
State finalState = executeRun.getExecuteModelCommand().getFinalState();
// explores the final state and can throw a ProBError
Collection<StateError> stateErrors = finalState.getStateErrors();
for (StateError stateError : stateErrors) {
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, stateError.getLongDescription(), e));
}
} catch (ProBError e2) {
// Enumeration errors
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e2.getMessage(), e2));
return;
}
} else {
/*- static errors such as type errors or errors while loading the state space */
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e.getMessage(), e));
/*- no final state is available and thus we can not create RuleResults */
return;
}
} catch (Exception e) {
logger.error("Unexpected error occured: {}", e.getMessage(), e);
// storing all error messages
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e.getMessage(), e));
return;
} finally {
if (executeRun.getUsedStateSpace() != null) {
GetTotalNumberOfErrorsCommand totalNumberOfErrorsCommand = new GetTotalNumberOfErrorsCommand();
executeRun.getUsedStateSpace().execute(totalNumberOfErrorsCommand);
totalNumberOfProBCliErrors = totalNumberOfErrorsCommand.getTotalNumberOfErrors();
}
}
this.stateSpace = this.executeRun.getUsedStateSpace();
stopWatch.start(Timer.EXTRACT_RESULTS);
this.ruleResults = new RuleResults(this.rulesProject, executeRun.getExecuteModelCommand().getFinalState(), maxNumberOfReportedCounterExamples);
logger.info("Time to extract results from final state: {}", stopWatch.stop(Timer.EXTRACT_RESULTS));
}
use of de.be4.ltl.core.ctlparser.node.Start in project prob2 by bendisposto.
the class ModelGenerator method addComponent.
private ModelModifier addComponent(ModelModifier modelM, String name, String componentDesc, Map<String, String> components) throws BException {
EventBParser parser = new EventBParser();
Start ast = parser.parse(componentDesc, false);
ReferenceExtractor e = new ReferenceExtractor();
ast.apply(e);
if (e.isContext()) {
for (String s : e.getExtends()) {
String fileN = s + ".ctx";
if (modelM.getModel().getComponent(fileN) == null) {
if (components.get(fileN) == null) {
throw new IllegalArgumentException("no component description for context " + s);
}
modelM = addComponent(modelM, s, components.get(fileN), components);
}
}
modelM = addComponent(modelM, ast);
} else if (e.isMachine()) {
for (String s : e.getSees()) {
String fileN = s + ".ctx";
if (modelM.getModel().getComponent(fileN) == null) {
if (components.get(fileN) == null) {
throw new IllegalArgumentException("no component description for context " + s);
}
modelM = addComponent(modelM, s, components.get(fileN), components);
}
}
for (String s : e.getRefines()) {
String fileN = s + ".emch";
if (modelM.getModel().getComponent(fileN) == null) {
if (components.get(fileN) == null) {
throw new IllegalArgumentException("no component description for machine " + s);
}
modelM = addComponent(modelM, s, components.get(fileN), components);
}
}
modelM = addComponent(modelM, ast);
}
return modelM;
}
use of de.be4.ltl.core.ctlparser.node.Start in project prob2 by bendisposto.
the class DependencyWalker method makeMachine.
private ClassicalBMachine makeMachine(final String dest, final String prefix) {
final DomBuilder builder = new DomBuilder(prefix);
final Start start = map.get(dest);
start.apply(builder);
return builder.getMachine();
}
use of de.be4.ltl.core.ctlparser.node.Start in project prob2 by bendisposto.
the class DomBuilder method createExpressionAST.
private Start createExpressionAST(final PExpression expression) {
Start start = new Start();
AExpressionParseUnit node = new AExpressionParseUnit();
start.setPParseUnit(node);
start.setEOF(EOF);
node.setExpression((PExpression) expression.clone());
node.getExpression().apply(new RenameIdentifiers());
return start;
}
use of de.be4.ltl.core.ctlparser.node.Start in project prob2 by bendisposto.
the class DomBuilder method createPredicateAST.
private Start createPredicateAST(final PPredicate pPredicate) {
Start start = new Start();
APredicateParseUnit node2 = new APredicateParseUnit();
start.setPParseUnit(node2);
start.setEOF(EOF);
node2.setPredicate((PPredicate) pPredicate.clone());
node2.getPredicate().apply(new RenameIdentifiers());
return start;
}
Aggregations