+
+ @Override
+ protected Object reduceViewPattern() {
+ return new EViewPattern((Expression)get(1), (Expression)get(3));
+ }
+
+ @Override
+ protected Object reduceCHRStatement() {
+ return new CHRStatement((ListQualifier[])get(0), (ListQualifier[])get(2));
+ }
+
+ @Override
+ protected Object reduceConstraintStatement() {
+ ConstructorAst constructor = (ConstructorAst)get(1);
+ return new ConstraintStatement(constructor.name, constructor.parameters, constructor.fieldNames, constructor.annotations);
+ }
+
+ @Override
+ protected Object reduceCHRQuery() {
+ ListQualifier[] query = new ListQualifier[(length()+1)/2];
+ for(int i=0;i<query.length;++i)
+ query[i] = (ListQualifier)get(i*2);
+ return query;
+ }
+
+ /*
+ @Override
+ protected Object reduceWhen() {
+ return new EWhen(
+ new QConjunction((Query[])get(1)),
+ (Expression)get(3));
+ }*/
+
+ @Override
+ protected Object reduceVerboseCHRQuery() {
+ ListQualifier[] query = new ListQualifier[(length()-1)/2];
+ for(int i=0;i<query.length;++i)
+ query[i] = (ListQualifier)get(i*2+1);
+ return query;
+ }
+
+ @Override
+ protected Object reduceVerboseCHRStatement() {
+ return new CHRStatement((ListQualifier[])get(1), (ListQualifier[])get(3));
+ }
+
+ @Override
+ protected Object reduceDummy() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected Object reduceRulesetDefinition() {
+ Token name = (Token)get(1);
+ EBlock block = (EBlock)get(3);
+ return new DRulesetAst(name.text, block);
+ }
+
+ @Override
+ protected Object reduceLocalInclude() {
+ Token name = (Token)get(1);
+ Expression value = (Expression)get(2);
+ return new IncludeStatement(name, value);
+ }
+
+ /*@Override
+ protected Object reduceConstraintSpec() {
+ Expression[] expressions = new Expression[length()/2-1];
+ for(int i=0;i<expressions.length;++i)
+ expressions[i] = (Expression)get(2*i+1);
+ return expressions;
+ }*/
+
+ @Override
+ protected Object reduceCHRSelect() {
+ return new EPreCHRSelect((ListQualifier[])get(3), (Expression)get(1));
+ }
+