+
+ private CHRRuleset extractCHRRules(TranslationContext context, int begin, int end) {
+ CHRRuleset ruleset = new CHRRuleset();
+ ruleset.location = Locations.combine(statements.get(begin).location, statements.get(end-1).location);
+ for(int i=begin;i<end;++i) {
+ Statement statement = statements.get(i);
+ if(statement instanceof CHRStatement) {
+ CHRStatement chrStatement = (CHRStatement)statement;
+ ruleset.addRule(new CHRRule(chrStatement.location,
+ chrStatement.head.translate(context, CHRQueryTranslationMode.RULE_HEAD),
+ chrStatement.body.translate(context, CHRQueryTranslationMode.RULE_BODY)));
+ }
+ else if(statement instanceof ConstraintStatement)
+ ruleset.addConstraint(CHRTranslation.convertConstraintStatement(context, (ConstraintStatement)statement));
+ else if(statement instanceof IncludeStatement)
+ ruleset.includes.add((IncludeStatement)statement);
+ else
+ context.getErrorLog().log(statement.location, "Invalid CHR statement.");
+ }
+ return ruleset;
+ }