use of org.drools.drl.parser.ParserError in project drools by kiegroup.
the class XmlBifParser method loadBif.
public static Bif loadBif(Resource resource, ArrayList<KnowledgeBuilderError> errors) {
InputStream is = null;
try {
is = resource.getInputStream();
} catch (IOException e) {
errors.add(new ParserError(resource, "Exception opening Stream:\n" + e.toString(), 0, 0));
return null;
}
try {
String encoding = resource instanceof InternalResource ? ((InternalResource) resource).getEncoding() : null;
XStream xstream = encoding != null ? createNonTrustingXStream(new DomDriver(encoding)) : createNonTrustingXStream();
initXStream(xstream);
Bif bif = (Bif) xstream.fromXML(is);
return bif;
} catch (Exception e) {
errors.add(new BayesNetworkAssemblerError(resource, "Unable to parse opening Stream:\n" + e.toString()));
return null;
}
}
use of org.drools.drl.parser.ParserError in project drools by kiegroup.
the class KnowledgeBuilderTest method testDuplicateRuleNames.
@Test
public void testDuplicateRuleNames() throws Exception {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
RuleDescr ruleDescr;
AndDescr lhs;
PatternDescr patternDescr;
FieldConstraintDescr literalDescr;
final PackageDescr packageDescr = createBasicPackageWithOneRule(1, 1);
ruleDescr = new RuleDescr("rule-1");
ruleDescr.setLocation(42, 43);
packageDescr.addRule(ruleDescr);
lhs = new AndDescr();
ruleDescr.setLhs(lhs);
patternDescr = new PatternDescr(Cheese.class.getName(), "stilton");
literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("!=", null));
patternDescr.addConstraint(literalDescr);
ruleDescr.setConsequence("");
ruleDescr = new RuleDescr("rule-2");
ruleDescr.setLocation(42, 43);
packageDescr.addRule(ruleDescr);
lhs = new AndDescr();
ruleDescr.setLhs(lhs);
patternDescr = new PatternDescr(Cheese.class.getName(), "stilton");
literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("!=", null));
patternDescr.addConstraint(literalDescr);
ruleDescr.setConsequence("");
builder.addPackage(packageDescr);
assertLength(2, builder.getErrors().getErrors());
final ParserError err = (ParserError) builder.getErrors().getErrors()[0];
assertEquals(42, err.getRow());
assertEquals(43, err.getCol());
}
use of org.drools.drl.parser.ParserError in project drools by kiegroup.
the class DSLTokenizedMappingFile method parseAndLoad.
@Override
public boolean parseAndLoad(Reader dsl) throws IOException {
List<ParserError> errors = new ArrayList<ParserError>();
String text = readFile(dsl);
dsl = new StringReader(text);
try {
DSLMapping mapping = buildFileMapping(errors, dsl);
mapping.setOptions(optionSet);
setMapping(mapping);
List<ParserError> moderr = new ArrayList<ParserError>();
for (ParserError err : errors) {
int row = err.getRow();
int col = err.getCol();
if (row > 0) {
int len;
while ((len = lineLengths.get(row)) < col) {
col -= len + 1;
row++;
}
}
moderr.add(new ParserError(err.getMessage(), row, col));
}
errors = moderr;
} catch (Exception e) {
final String msg = "Error parsing DSL mapping: " + e.getMessage();
ParserError parserError = new ParserError(msg, -1, 0);
errors.add(parserError);
}
setErrors(errors);
return errors.isEmpty();
}
use of org.drools.drl.parser.ParserError in project drools by kiegroup.
the class DrlxCompiler method toPackageDescr.
public PackageDescr toPackageDescr(Resource resource) throws IOException {
ParseStart<CompilationUnit> context = ParseStart.DRLX_COMPILATION_UNIT;
MvelParser mvelParser = new MvelParser(new ParserConfiguration(), false);
ParseResult<CompilationUnit> result = mvelParser.parse(context, provider(resource.getReader()));
if (result.isSuccessful()) {
DrlxVisitor drlxCompiler = new DrlxVisitor();
drlxCompiler.visit(result.getResult().get(), null);
PackageDescr pkg = drlxCompiler.getPackageDescr();
if (pkg == null) {
this.results.add(new ParserError(resource, "Parser returned a null Package", 0, 0));
return null;
} else {
pkg.setResource(resource);
return pkg;
}
} else {
for (Problem problem : result.getProblems()) {
TokenRange tokenRange = problem.getLocation().get();
Range range = tokenRange.getBegin().getRange().get();
int lineCount = range.getLineCount();
this.results.add(new ParserError(problem.getMessage(), lineCount, -1));
}
return null;
}
}
Aggregations