X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fparsing%2Fparser%2FSCLParserImpl.java;h=08200a44dfd59bd50d5ea788c649abcf7e8ca146;hb=3d043320cdee8dda92758f4ea1c324a82c7d9094;hp=a29368c2af31c33457ba3482cb110aa48fd84c90;hpb=82a87b8535628d47d9c381e1a3a2296fb67c7fd0;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParserImpl.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParserImpl.java index a29368c2a..08200a44d 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParserImpl.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/parser/SCLParserImpl.java @@ -111,6 +111,7 @@ import org.simantics.scl.compiler.internal.parsing.types.TEffectAst; import org.simantics.scl.compiler.internal.parsing.types.TForAllAst; import org.simantics.scl.compiler.internal.parsing.types.TFunctionAst; import org.simantics.scl.compiler.internal.parsing.types.TListAst; +import org.simantics.scl.compiler.internal.parsing.types.TPlainEffectAst; import org.simantics.scl.compiler.internal.parsing.types.TPredAst; import org.simantics.scl.compiler.internal.parsing.types.TTupleAst; import org.simantics.scl.compiler.internal.parsing.types.TVarAst; @@ -129,6 +130,10 @@ public class SCLParserImpl extends SCLParser { this.lexer = new SCLPostLexer(reader); } + public SCLPostLexer getLexer() { + return lexer; + } + public void setCompilationContext(CompilationContext context) { this.context = context; lexer.setCompilationContext(context); @@ -818,6 +823,16 @@ public class SCLParserImpl extends SCLParser { protected Object reduceGreater() { return new EVar(((Token)get(0)).text); } + + @Override + protected Object reduceDoubleLess() { + return new EVar(((Token)get(0)).text); + } + + @Override + protected Object reduceDoubleGreater() { + return new EVar(((Token)get(0)).text); + } @Override protected Object reduceDot() { @@ -1347,4 +1362,21 @@ public class SCLParserImpl extends SCLParser { return new CHRStatement((CHRAstQuery)get(0), (CHRAstQuery)get(2)); } + @Override + protected Object reduceWildcard() { + return new FieldAssignment(FieldAssignment.WILDCARD, null); + } + + @Override + protected Object reducePlainEffect() { + ArrayList effects = new ArrayList(length()/2); + for(int i=1;i