import java.util.ArrayList;
import java.util.Arrays;
-import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
import org.simantics.scl.compiler.elaboration.chr.CHRQuery;
import org.simantics.scl.compiler.elaboration.chr.CHRRule;
}
}
- public static CHRRule convertCHRStatement(TranslationContext context, CHRStatement statement) {
- ArrayList<CHRLiteral> head = new ArrayList<CHRLiteral>(statement.head.length);
- for(ListQualifier qualifier : statement.head) {
- CHRLiteral literal = convertListQualifier(context, true, qualifier);
- if(literal != null)
- head.add(literal);
- }
- ArrayList<CHRLiteral> body = new ArrayList<CHRLiteral>(statement.body.length);
- for(ListQualifier qualifier : statement.body) {
- CHRLiteral literal = convertListQualifier(context, false, qualifier);
+ public static CHRQuery convertCHRQuery(TranslationContext context, boolean isHead, ListQualifier[] lqs) {
+ ArrayList<CHRLiteral> query = new ArrayList<CHRLiteral>(lqs.length);
+ for(ListQualifier qualifier : lqs) {
+ CHRLiteral literal = convertListQualifier(context, isHead, qualifier);
if(literal != null)
- body.add(literal);
+ query.add(literal);
}
+ return new CHRQuery(query.toArray(new CHRLiteral[query.size()]));
+ }
+
+ public static CHRRule convertCHRStatement(TranslationContext context, CHRStatement statement) {
return new CHRRule(statement.location,
- new CHRQuery(head.toArray(new CHRLiteral[head.size()])),
- new CHRQuery(body.toArray(new CHRLiteral[body.size()])),
+ convertCHRQuery(context, true, statement.head),
+ convertCHRQuery(context, false, statement.body),
null);
}