]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/ast/CHRAstQuery.java
CHR query translation and support for assignment in CHR bodies
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / ast / CHRAstQuery.java
1 package org.simantics.scl.compiler.elaboration.chr.ast;
2
3 import java.util.ArrayList;
4
5 import org.simantics.scl.compiler.elaboration.chr.CHRLiteral;
6 import org.simantics.scl.compiler.elaboration.chr.CHRQuery;
7 import org.simantics.scl.compiler.elaboration.contexts.TranslationContext;
8 import org.simantics.scl.compiler.internal.parsing.Symbol;
9
10 public abstract class CHRAstQuery extends Symbol {
11     public CHRQuery translate(TranslationContext context, CHRQueryTranslationMode mode) {
12         ArrayList<CHRLiteral> literals = new ArrayList<CHRLiteral>(); 
13         translate(context, mode, literals);
14         return new CHRQuery(literals.toArray(new CHRLiteral[literals.size()]));
15     }
16
17     protected abstract void translate(TranslationContext context, CHRQueryTranslationMode mode, ArrayList<CHRLiteral> literals);
18
19     public abstract void accept(CHRAstQueryVisitor visitor);
20 }