import org.simantics.scl.compiler.elaboration.expressions.EBlock;
import org.simantics.scl.compiler.elaboration.expressions.EConstant;
import org.simantics.scl.compiler.elaboration.expressions.EEnforce;
-import org.simantics.scl.compiler.elaboration.expressions.EEntityTypeAnnotation;
import org.simantics.scl.compiler.elaboration.expressions.EEquations;
import org.simantics.scl.compiler.elaboration.expressions.EFieldAccess;
import org.simantics.scl.compiler.elaboration.expressions.EIf;
import org.simantics.scl.compiler.internal.parsing.declarations.DImportJavaAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DInstanceAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DMappingRelationAst;
+import org.simantics.scl.compiler.internal.parsing.declarations.DModuleHeader;
import org.simantics.scl.compiler.internal.parsing.declarations.DRelationAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DRuleAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DTypeAst;
@Override
protected Object reduceModule() {
ArrayList<DeclarationAst> declarations = new ArrayList<DeclarationAst>(length()/2+1);
- for(int i=0;i<length();i+=2)
- declarations.add((DeclarationAst)get(i));
+ for(int i=0;i<length();i+=2) {
+ DeclarationAst declaration = (DeclarationAst)get(i);
+ if(declaration == null)
+ throw new NullPointerException();
+ declarations.add(declaration);
+ }
return declarations;
}
+
+ @Override
+ protected Object reduceModuleHeader() {
+ FieldAssignment[] fields = new FieldAssignment[length()/2-1];
+ for(int i=0;i<fields.length;++i)
+ fields[i] = (FieldAssignment)get(2+i*2);
+ return new DModuleHeader(fields);
+ }
@Override
protected Object reduceLocalTypeAnnotation() {
@Override
protected Object reduceIdAccessor() {
- return new IdAccessor(((Token)get(0)).text);
+ return new IdAccessor('.', ((Token)get(0)).text);
}
@Override
protected Object reduceStringAccessor() {
- return new StringAccessor(((Token)get(1)).text);
+ return new StringAccessor('.', ((Token)get(1)).text);
}
@Override
protected Object reduceExpAccessor() {
- return new ExpressionAccessor((Expression)get(1));
+ return new ExpressionAccessor('.', (Expression)get(1));
}
@Override
protected Object reduceFieldAccess() {
if(length() == 1)
return get(0);
- FieldAccessor[] accessors = new FieldAccessor[length()/2];
- for(int i=0;i<accessors.length;++i) {
- FieldAccessor accessor = (FieldAccessor)get(i*2+2);
- accessor.accessSeparator = ((Token)get(i*2+1)).text.charAt(0);
- accessors[i] = accessor;
+ Expression result = (Expression)get(0);
+ for(int i=2;i<length();i+=2) {
+ FieldAccessor accessor = (FieldAccessor)get(i);
+ accessor.accessSeparator = ((Token)get(i-1)).text.charAt(0);
+ result = new EFieldAccess(result, accessor);
}
- return new EFieldAccess((Expression)get(0), accessors);
+ return result;
}
@Override
protected Object reduceRuleStatement() {
return new RuleStatement((Expression)get(0), new QConjunction((Query[])get(2)));
}
-
- @Override
- protected Object reduceEntityTypeAnnotation() {
- return new EEntityTypeAnnotation((Expression)get(0), (Token)get(2),
- length() > 3
- ? new QConjunction((Query[])get(length()-1))
- : null);
- }
@Override
protected Object reduceHashedId() {
throw new UnsupportedOperationException();
}
+ @Override
+ protected Object reduceRulesetDefinition() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected Object reduceLocalInclude() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}