From 3b404dc62b2b2e8a4d9e4fdda597e76c26a1e8cc Mon Sep 17 00:00:00 2001 From: Sophie Coudert <sophie.coudert@telecom-paris.fr> Date: Tue, 11 Apr 2023 12:50:16 +0200 Subject: [PATCH] script added to automate parser generation --- .../java/myutil/intboolsolver/IBSScanner.java | 15 + .../myutil/intboolsolver/IBSStdLexer.java | 120 +++--- .../myutil/intboolsolver/IBSStdParser.java | 357 +++++++----------- ...IBSStdParserSym.java => IBSStdSymbol.java} | 12 +- .../intboolsolver/javacup/IBSStdLexer.jflex | 65 ++-- .../intboolsolver/javacup/IBSStdParser.jcup | 58 +-- .../java/myutil/intboolsolver/javacup/compile | 32 +- .../myutil/intboolsolver/javacup/test.tgz | Bin 2156 -> 0 bytes 8 files changed, 296 insertions(+), 363 deletions(-) create mode 100644 src/main/java/myutil/intboolsolver/IBSScanner.java rename src/main/java/myutil/intboolsolver/{IBSStdParserSym.java => IBSStdSymbol.java} (83%) delete mode 100644 src/main/java/myutil/intboolsolver/javacup/test.tgz diff --git a/src/main/java/myutil/intboolsolver/IBSScanner.java b/src/main/java/myutil/intboolsolver/IBSScanner.java new file mode 100644 index 0000000000..dafd9a00a0 --- /dev/null +++ b/src/main/java/myutil/intboolsolver/IBSScanner.java @@ -0,0 +1,15 @@ +package myutil.intboolsolver; +import java.util.HashSet; + +public interface IBSScanner< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, + CompState extends IBSParamCompState > extends java_cup.runtime.Scanner { + public void setAttributeClass( IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _attrC); + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass(); + public void setExpressionClass( IBSExpressionClass<Spec,Comp,State,SpecState,CompState> _exprC); + public IBSExpressionClass<Spec,Comp,State,SpecState,CompState> getExpressionClass(); + public HashSet<String> getBadIdents(); + public void clearBadIdents(); + public void init(String _s) throws java.io.IOException; + public void init(Spec _spec, String _s) throws java.io.IOException; + public void init(Comp _comp, String _s) throws java.io.IOException; +} diff --git a/src/main/java/myutil/intboolsolver/IBSStdLexer.java b/src/main/java/myutil/intboolsolver/IBSStdLexer.java index 9b7d3b17a8..4b5ef55fb9 100644 --- a/src/main/java/myutil/intboolsolver/IBSStdLexer.java +++ b/src/main/java/myutil/intboolsolver/IBSStdLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 06/04/2023 17:36 */ +/* The following code was generated by JFlex 1.4.3 on 11/04/2023 12:46 */ package myutil.intboolsolver; import java_cup.runtime.*; @@ -8,10 +8,10 @@ import java.util.HashSet; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.4.3 - * on 06/04/2023 17:36 from the specification file - * <tt>IBSStdLexer.jflex</tt> + * on 11/04/2023 12:46 from the specification file + * <tt>__tmplexer2.jflex</tt> */ -public class IBSStdLexer< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState > implements java_cup.runtime.Scanner { +public class IBSStdLexer< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState > implements IBSScanner<Spec, Comp, State, SpecState, CompState>, java_cup.runtime.Scanner { /** This character denotes the end of file */ public static final int YYEOF = -1; @@ -299,7 +299,7 @@ public void init(Comp _comp, String _s) throws java.io.IOException { attrHandler * * @param in the java.io.Reader to read input from. */ - IBSStdLexer(java.io.Reader in) { + public IBSStdLexer(java.io.Reader in) { this.zzReader = in; } @@ -309,7 +309,7 @@ public void init(Comp _comp, String _s) throws java.io.IOException { attrHandler * * @param in the java.io.Inputstream to read input from. */ - IBSStdLexer(java.io.InputStream in) { + public IBSStdLexer(java.io.InputStream in) { this(new java.io.InputStreamReader(in)); } @@ -602,102 +602,102 @@ public void init(Comp _comp, String _s) throws java.io.IOException { attrHandler zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 16: - { return new Symbol(IBSStdParserSym.DIF); + case 21: + { return new Symbol(IBSStdSymbol.BOOL, Integer.valueOf(exprC.make_bConst(false))); } case 24: break; - case 23: - { yybegin(INTBOOL); return new Symbol(IBSStdParserSym.PARSE_INT); + case 4: + { return new Symbol(IBSStdSymbol.PLUS); } case 25: break; - case 10: - { return new Symbol(IBSStdParserSym.LT); + case 5: + { return new Symbol(IBSStdSymbol.MINUS); } case 26: break; - case 3: - { IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = - attrHandler.getTypedAttribute(yytext()); - switch(attr.getType()) { - case IBSAttributeClass.NullAttr : badIdents.add(yytext()); throw new Exception ("Bad Ident : " + yytext()); - case IBSAttributeClass.BoolConst : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); - case IBSAttributeClass.IntConst : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); - case IBSAttributeClass.BoolAttr : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); - case IBSAttributeClass.IntAttr : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); - default : throw new Error ("Lexer, BUG : bad attribute type"); - } + case 16: + { return new Symbol(IBSStdSymbol.DIF); } case 27: break; - case 19: - { return new Symbol(IBSStdParserSym.GEQ); + case 13: + { return new Symbol(IBSStdSymbol.RPAR); } case 28: break; - case 8: - { return new Symbol(IBSStdParserSym.MOD); + case 11: + { return new Symbol(IBSStdSymbol.GT); } case 29: break; - case 11: - { return new Symbol(IBSStdParserSym.GT); + case 17: + { return new Symbol(IBSStdSymbol.EQ); } case 30: break; - case 18: - { return new Symbol(IBSStdParserSym.LEQ); + case 2: + { try { return new Symbol(IBSStdSymbol.INT, Integer.valueOf(exprC.make_iConst(Integer.parseInt(yytext()))));} + catch (NumberFormatException nfe) { throw new Exception ("Lexer : Integer Format : " + yytext()); } } case 31: break; - case 17: - { return new Symbol(IBSStdParserSym.EQ); + case 14: + { return new Symbol(IBSStdSymbol.OR); } case 32: break; - case 14: - { return new Symbol(IBSStdParserSym.OR); + case 6: + { return new Symbol(IBSStdSymbol.MULT); } case 33: break; - case 4: - { return new Symbol(IBSStdParserSym.PLUS); + case 19: + { return new Symbol(IBSStdSymbol.GEQ); } case 34: break; - case 21: - { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(false))); + case 8: + { return new Symbol(IBSStdSymbol.MOD); } case 35: break; - case 13: - { return new Symbol(IBSStdParserSym.RPAR); + case 12: + { return new Symbol(IBSStdSymbol.LPAR); } case 36: break; - case 5: - { return new Symbol(IBSStdParserSym.MINUS); + case 18: + { return new Symbol(IBSStdSymbol.LEQ); } case 37: break; case 22: - { yybegin(INTBOOL); return new Symbol(IBSStdParserSym.PARSE_BOOL); + { yybegin(INTBOOL); return new Symbol(IBSStdSymbol.PARSE_BOOL); } case 38: break; - case 15: - { return new Symbol(IBSStdParserSym.AND); + case 3: + { IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = + attrHandler.getTypedAttribute(yytext()); + switch(attr.getType()) { + case IBSAttributeClass.NullAttr : badIdents.add(yytext()); throw new Exception ("Bad Ident : " + yytext()); + case IBSAttributeClass.BoolConst : return new Symbol(IBSStdSymbol.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); + case IBSAttributeClass.IntConst : return new Symbol(IBSStdSymbol.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); + case IBSAttributeClass.BoolAttr : return new Symbol(IBSStdSymbol.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); + case IBSAttributeClass.IntAttr : return new Symbol(IBSStdSymbol.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); + default : throw new Error ("Lexer, BUG : bad attribute type"); + } } case 39: break; - case 9: - { return new Symbol(IBSStdParserSym.NOT); + case 20: + { return new Symbol(IBSStdSymbol.BOOL, Integer.valueOf(exprC.make_bConst(true))); } case 40: break; - case 7: - { return new Symbol(IBSStdParserSym.DIV); + case 15: + { return new Symbol(IBSStdSymbol.AND); } case 41: break; - case 6: - { return new Symbol(IBSStdParserSym.MULT); + case 9: + { return new Symbol(IBSStdSymbol.NOT); } case 42: break; - case 12: - { return new Symbol(IBSStdParserSym.LPAR); + case 23: + { yybegin(INTBOOL); return new Symbol(IBSStdSymbol.PARSE_INT); } case 43: break; - case 20: - { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(true))); + case 7: + { return new Symbol(IBSStdSymbol.DIV); } case 44: break; - case 2: - { try { return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(Integer.parseInt(yytext()))));} - catch (NumberFormatException nfe) { throw new Exception ("Lexer : Integer Format : " + yytext()); } + case 10: + { return new Symbol(IBSStdSymbol.LT); } case 45: break; case 1: @@ -708,7 +708,7 @@ public void init(Comp _comp, String _s) throws java.io.IOException { attrHandler if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; zzDoEOF(); - { return new java_cup.runtime.Symbol(IBSStdParserSym.EOF); + { return new java_cup.runtime.Symbol(IBSStdSymbol.EOF); } } else { diff --git a/src/main/java/myutil/intboolsolver/IBSStdParser.java b/src/main/java/myutil/intboolsolver/IBSStdParser.java index a87ce5b993..94198fc793 100644 --- a/src/main/java/myutil/intboolsolver/IBSStdParser.java +++ b/src/main/java/myutil/intboolsolver/IBSStdParser.java @@ -16,7 +16,7 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, @Override public final Class<?> getSymbolContainer() { - return IBSStdParserSym.class; + return IBSStdSymbol.class; } /** Default constructor. */ @@ -33,16 +33,14 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, /** Production table. */ protected static final short _production_table[][] = unpackFromStrings(new String[] { - "\000\035\000\002\002\004\000\002\002\004\000\002\002" + - "\004\000\002\003\003\000\002\003\005\000\002\003\005" + + "\000\030\000\002\002\004\000\002\002\004\000\002\002" + + "\004\000\002\003\005\000\002\003\005\000\002\003\005" + + "\000\002\003\005\000\002\003\005\000\002\003\005\000" + + "\002\003\004\000\002\003\003\000\002\004\005\000\002" + + "\004\005\000\002\004\003\000\002\004\005\000\002\004" + + "\004\000\002\004\005\000\002\004\005\000\002\004\005" + "\000\002\004\005\000\002\004\005\000\002\004\005\000" + - "\002\004\003\000\002\005\003\000\002\005\005\000\002" + - "\005\004\000\002\006\005\000\002\006\003\000\002\007" + - "\005\000\002\007\003\000\002\010\003\000\002\010\003" + - "\000\002\010\005\000\002\010\004\000\002\011\005\000" + - "\002\011\005\000\002\011\005\000\002\011\005\000\002" + - "\011\005\000\002\011\005\000\002\011\005\000\002\011" + - "\005" }); + "\002\004\005\000\002\004\005" }); /** Access to production table. */ @Override @@ -51,82 +49,77 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, /** Parse-action table. */ protected static final short[][] _action_table = unpackFromStrings(new String[] { - "\000\071\000\006\024\004\025\005\001\002\000\010\005" + - "\010\022\027\026\012\001\002\000\014\005\010\021\021" + - "\022\015\026\012\027\013\001\002\000\004\002\007\001" + - "\002\000\004\002\000\001\002\000\010\005\010\022\027" + - "\026\012\001\002\000\016\002\ufff1\011\ufff1\012\ufff1\013" + - "\ufff1\014\ufff1\023\ufff1\001\002\000\040\002\ufff7\004\ufff7" + - "\005\ufff7\006\ufff7\007\ufff7\010\ufff7\011\ufff7\012\ufff7\013" + - "\ufff7\014\ufff7\015\ufff7\016\ufff7\017\ufff7\020\ufff7\023\ufff7" + - "\001\002\000\016\002\ufff0\011\ufff0\012\ufff0\013\ufff0\014" + - "\ufff0\023\ufff0\001\002\000\012\002\001\012\044\013\043" + - "\014\042\001\002\000\014\005\010\021\021\022\015\026" + - "\012\027\013\001\002\000\040\002\ufff8\004\ufff8\005\ufff8" + + "\000\063\000\006\025\004\026\005\001\002\000\010\005" + + "\014\022\020\027\016\001\002\000\014\005\014\021\012" + + "\022\013\027\016\030\015\001\002\000\004\002\007\001" + + "\002\000\004\002\000\001\002\000\030\004\024\005\025" + + "\006\023\007\026\010\022\013\051\014\050\015\054\016" + + "\052\017\055\020\053\001\002\000\014\002\001\011\041" + + "\012\042\013\037\014\040\001\002\000\014\005\014\021" + + "\012\022\013\027\016\030\015\001\002\000\014\005\014" + + "\021\012\022\013\027\016\030\015\001\002\000\010\005" + + "\014\022\020\027\016\001\002\000\016\002\ufff4\011\ufff4" + + "\012\ufff4\013\ufff4\014\ufff4\023\ufff4\001\002\000\040\002" + + "\ufff7\004\ufff7\005\ufff7\006\ufff7\007\ufff7\010\ufff7\011\ufff7" + + "\012\ufff7\013\ufff7\014\ufff7\015\ufff7\016\ufff7\017\ufff7\020" + + "\ufff7\023\ufff7\001\002\000\040\002\ufff8\004\ufff8\005\ufff8" + "\006\ufff8\007\ufff8\010\ufff8\011\ufff8\012\ufff8\013\ufff8\014" + "\ufff8\015\ufff8\016\ufff8\017\ufff8\020\ufff8\023\ufff8\001\002" + - "\000\016\002\ufff3\011\047\012\ufff3\013\ufff3\014\ufff3\023" + - "\ufff3\001\002\000\022\004\032\005\033\013\053\014\054" + - "\015\055\016\056\017\060\020\057\001\002\000\014\005" + - "\010\021\021\022\015\026\012\027\013\001\002\000\040" + - "\002\ufffe\004\ufffe\005\ufffe\006\025\007\026\010\024\011" + - "\ufffe\012\ufffe\013\ufffe\014\ufffe\015\ufffe\016\ufffe\017\ufffe" + - "\020\ufffe\023\ufffe\001\002\000\016\002\uffef\011\uffef\012" + - "\uffef\013\uffef\014\uffef\023\uffef\001\002\000\010\005\010" + - "\022\027\026\012\001\002\000\010\005\010\022\027\026" + - "\012\001\002\000\010\005\010\022\027\026\012\001\002" + - "\000\010\005\010\022\027\026\012\001\002\000\040\002" + - "\ufffa\004\ufffa\005\ufffa\006\ufffa\007\ufffa\010\ufffa\011\ufffa" + - "\012\ufffa\013\ufffa\014\ufffa\015\ufffa\016\ufffa\017\ufffa\020" + - "\ufffa\023\ufffa\001\002\000\010\004\032\005\033\023\034" + - "\001\002\000\010\005\010\022\027\026\012\001\002\000" + - "\010\005\010\022\027\026\012\001\002\000\040\002\ufff6" + - "\004\ufff6\005\ufff6\006\ufff6\007\ufff6\010\ufff6\011\ufff6\012" + - "\ufff6\013\ufff6\014\ufff6\015\ufff6\016\ufff6\017\ufff6\020\ufff6" + - "\023\ufff6\001\002\000\040\002\ufffc\004\ufffc\005\ufffc\006" + - "\025\007\026\010\024\011\ufffc\012\ufffc\013\ufffc\014\ufffc" + + "\000\010\005\014\022\020\027\016\001\002\000\016\004" + + "\024\005\025\006\023\007\026\010\022\023\027\001\002" + + "\000\010\005\014\022\020\027\016\001\002\000\010\005" + + "\014\022\020\027\016\001\002\000\010\005\014\022\020" + + "\027\016\001\002\000\010\005\014\022\020\027\016\001" + + "\002\000\010\005\014\022\020\027\016\001\002\000\040" + + "\002\ufff9\004\ufff9\005\ufff9\006\ufff9\007\ufff9\010\ufff9\011" + + "\ufff9\012\ufff9\013\ufff9\014\ufff9\015\ufff9\016\ufff9\017\ufff9" + + "\020\ufff9\023\ufff9\001\002\000\040\002\ufffb\004\ufffb\005" + + "\ufffb\006\ufffb\007\ufffb\010\ufffb\011\ufffb\012\ufffb\013\ufffb" + + "\014\ufffb\015\ufffb\016\ufffb\017\ufffb\020\ufffb\023\ufffb\001" + + "\002\000\040\002\ufffd\004\ufffd\005\ufffd\006\023\007\026" + + "\010\022\011\ufffd\012\ufffd\013\ufffd\014\ufffd\015\ufffd\016" + + "\ufffd\017\ufffd\020\ufffd\023\ufffd\001\002\000\040\002\ufffe" + + "\004\ufffe\005\ufffe\006\023\007\026\010\022\011\ufffe\012" + + "\ufffe\013\ufffe\014\ufffe\015\ufffe\016\ufffe\017\ufffe\020\ufffe" + + "\023\ufffe\001\002\000\040\002\ufffc\004\ufffc\005\ufffc\006" + + "\ufffc\007\ufffc\010\ufffc\011\ufffc\012\ufffc\013\ufffc\014\ufffc" + "\015\ufffc\016\ufffc\017\ufffc\020\ufffc\023\ufffc\001\002\000" + - "\040\002\ufffd\004\ufffd\005\ufffd\006\025\007\026\010\024" + - "\011\ufffd\012\ufffd\013\ufffd\014\ufffd\015\ufffd\016\ufffd\017" + - "\ufffd\020\ufffd\023\ufffd\001\002\000\040\002\ufffb\004\ufffb" + - "\005\ufffb\006\ufffb\007\ufffb\010\ufffb\011\ufffb\012\ufffb\013" + - "\ufffb\014\ufffb\015\ufffb\016\ufffb\017\ufffb\020\ufffb\023\ufffb" + - "\001\002\000\040\002\ufff9\004\ufff9\005\ufff9\006\ufff9\007" + - "\ufff9\010\ufff9\011\ufff9\012\ufff9\013\ufff9\014\ufff9\015\ufff9" + - "\016\ufff9\017\ufff9\020\ufff9\023\ufff9\001\002\000\016\002" + - "\uffed\011\uffed\012\uffed\013\043\014\042\023\uffed\001\002" + - "\000\014\005\010\021\021\022\015\026\012\027\013\001" + - "\002\000\014\005\010\021\021\022\015\026\012\027\013" + - "\001\002\000\014\005\010\021\021\022\015\026\012\027" + - "\013\001\002\000\010\012\044\013\043\014\042\001\002" + - "\000\016\002\ufff4\011\047\012\ufff4\013\ufff4\014\ufff4\023" + - "\ufff4\001\002\000\014\005\010\021\021\022\015\026\012" + - "\027\013\001\002\000\016\002\ufff2\011\ufff2\012\ufff2\013" + - "\ufff2\014\ufff2\023\ufff2\001\002\000\016\002\uffe6\011\uffe6" + - "\012\uffe6\013\uffe6\014\uffe6\023\uffe6\001\002\000\016\002" + - "\uffe5\011\uffe5\012\uffe5\013\uffe5\014\uffe5\023\uffe5\001\002" + - "\000\010\005\010\022\027\026\012\001\002\000\010\005" + - "\010\022\027\026\012\001\002\000\010\005\010\022\027" + - "\026\012\001\002\000\010\005\010\022\027\026\012\001" + - "\002\000\010\005\010\022\027\026\012\001\002\000\010" + - "\005\010\022\027\026\012\001\002\000\022\002\uffea\004" + - "\032\005\033\011\uffea\012\uffea\013\uffea\014\uffea\023\uffea" + - "\001\002\000\022\002\uffe9\004\032\005\033\011\uffe9\012" + - "\uffe9\013\uffe9\014\uffe9\023\uffe9\001\002\000\022\002\uffeb" + - "\004\032\005\033\011\uffeb\012\uffeb\013\uffeb\014\uffeb\023" + - "\uffeb\001\002\000\022\002\uffec\004\032\005\033\011\uffec" + - "\012\uffec\013\uffec\014\uffec\023\uffec\001\002\000\022\002" + - "\uffe7\004\032\005\033\011\uffe7\012\uffe7\013\uffe7\014\uffe7" + - "\023\uffe7\001\002\000\022\002\uffe8\004\032\005\033\011" + - "\uffe8\012\uffe8\013\uffe8\014\uffe8\023\uffe8\001\002\000\012" + - "\012\044\013\043\014\042\023\071\001\002\000\024\004" + - "\032\005\033\013\053\014\054\015\055\016\056\017\060" + - "\020\057\023\034\001\002\000\016\002\uffee\011\uffee\012" + - "\uffee\013\uffee\014\uffee\023\uffee\001\002\000\040\002\ufff5" + - "\004\ufff5\005\ufff5\006\ufff5\007\ufff5\010\ufff5\011\ufff5\012" + - "\ufff5\013\ufff5\014\ufff5\015\ufff5\016\ufff5\017\ufff5\020\ufff5" + - "\023\ufff5\001\002\000\010\002\uffff\004\032\005\033\001" + - "\002" }); + "\040\002\ufffa\004\ufffa\005\ufffa\006\ufffa\007\ufffa\010\ufffa" + + "\011\ufffa\012\ufffa\013\ufffa\014\ufffa\015\ufffa\016\ufffa\017" + + "\ufffa\020\ufffa\023\ufffa\001\002\000\032\004\024\005\025" + + "\006\023\007\026\010\022\013\051\014\050\015\054\016" + + "\052\017\055\020\053\023\027\001\002\000\014\011\041" + + "\012\042\013\037\014\040\023\043\001\002\000\014\005" + + "\014\021\012\022\013\027\016\030\015\001\002\000\014" + + "\005\014\021\012\022\013\027\016\030\015\001\002\000" + + "\014\005\014\021\012\022\013\027\016\030\015\001\002" + + "\000\014\005\014\021\012\022\013\027\016\030\015\001" + + "\002\000\016\002\ufff3\011\ufff3\012\ufff3\013\ufff3\014\ufff3" + + "\023\ufff3\001\002\000\016\002\ufff6\011\041\012\ufff6\013" + + "\037\014\040\023\ufff6\001\002\000\016\002\ufff5\011\ufff5" + + "\012\ufff5\013\037\014\040\023\ufff5\001\002\000\016\002" + + "\uffea\011\uffea\012\uffea\013\uffea\014\uffea\023\uffea\001\002" + + "\000\016\002\uffeb\011\uffeb\012\uffeb\013\uffeb\014\uffeb\023" + + "\uffeb\001\002\000\010\005\014\022\020\027\016\001\002" + + "\000\010\005\014\022\020\027\016\001\002\000\010\005" + + "\014\022\020\027\016\001\002\000\010\005\014\022\020" + + "\027\016\001\002\000\010\005\014\022\020\027\016\001" + + "\002\000\010\005\014\022\020\027\016\001\002\000\030" + + "\002\uffef\004\024\005\025\006\023\007\026\010\022\011" + + "\uffef\012\uffef\013\uffef\014\uffef\023\uffef\001\002\000\030" + + "\002\ufff1\004\024\005\025\006\023\007\026\010\022\011" + + "\ufff1\012\ufff1\013\ufff1\014\ufff1\023\ufff1\001\002\000\030" + + "\002\uffee\004\024\005\025\006\023\007\026\010\022\011" + + "\uffee\012\uffee\013\uffee\014\uffee\023\uffee\001\002\000\030" + + "\002\ufff0\004\024\005\025\006\023\007\026\010\022\011" + + "\ufff0\012\ufff0\013\ufff0\014\ufff0\023\ufff0\001\002\000\030" + + "\002\uffed\004\024\005\025\006\023\007\026\010\022\011" + + "\uffed\012\uffed\013\uffed\014\uffed\023\uffed\001\002\000\030" + + "\002\uffec\004\024\005\025\006\023\007\026\010\022\011" + + "\uffec\012\uffec\013\uffec\014\uffec\023\uffec\001\002\000\016" + + "\002\ufff2\011\ufff2\012\ufff2\013\037\014\040\023\ufff2\001" + + "\002\000\016\002\uffff\004\024\005\025\006\023\007\026" + + "\010\022\001\002" }); /** Access to parse-action table. */ @Override @@ -135,35 +128,25 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, /** <code>reduce_goto</code> table. */ protected static final short[][] _reduce_table = unpackFromStrings(new String[] { - "\000\071\000\004\002\005\001\001\000\010\003\072\004" + - "\021\005\015\001\001\000\020\003\017\004\021\005\015" + - "\006\013\007\016\010\010\011\022\001\001\000\002\001" + - "\001\000\002\001\001\000\004\005\071\001\001\000\002" + - "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\020\003\067\004\021\005\015\006\066\007\016" + - "\010\010\011\022\001\001\000\002\001\001\000\002\001" + - "\001\000\002\001\001\000\020\003\017\004\021\005\015" + - "\006\040\007\016\010\010\011\022\001\001\000\002\001" + - "\001\000\002\001\001\000\004\005\037\001\001\000\004" + - "\005\036\001\001\000\004\005\027\001\001\000\010\003" + - "\030\004\021\005\015\001\001\000\002\001\001\000\002" + - "\001\001\000\006\004\035\005\015\001\001\000\006\004" + - "\034\005\015\001\001\000\002\001\001\000\002\001\001" + + "\000\063\000\004\002\005\001\001\000\004\003\064\001" + + "\001\000\006\003\007\004\010\001\001\000\002\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + - "\002\001\001\000\020\003\017\004\021\005\015\006\051" + - "\007\016\010\010\011\022\001\001\000\020\003\017\004" + - "\021\005\015\006\050\007\016\010\010\011\022\001\001" + - "\000\020\003\017\004\021\005\015\006\044\007\045\010" + - "\010\011\022\001\001\000\002\001\001\000\002\001\001" + - "\000\020\003\017\004\021\005\015\006\044\007\016\010" + - "\047\011\022\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\010\003\065\004\021\005\015\001" + - "\001\000\010\003\064\004\021\005\015\001\001\000\010" + - "\003\063\004\021\005\015\001\001\000\010\003\062\004" + - "\021\005\015\001\001\000\010\003\061\004\021\005\015" + - "\001\001\000\010\003\060\004\021\005\015\001\001\000" + + "\006\003\007\004\063\001\001\000\006\003\034\004\035" + + "\001\001\000\004\003\016\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\004\003\020\001\001" + + "\000\002\001\001\000\004\003\033\001\001\000\004\003" + + "\032\001\001\000\004\003\031\001\001\000\004\003\030" + + "\001\001\000\004\003\027\001\001\000\002\001\001\000" + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\006\003\007\004\046\001\001\000\006\003\007" + + "\004\045\001\001\000\006\003\007\004\044\001\001\000" + + "\006\003\007\004\043\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\004\003\062\001\001\000\004\003\061\001\001" + + "\000\004\003\060\001\001\000\004\003\057\001\001\000" + + "\004\003\056\001\001\000\004\003\055\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + "\000\002\001\001" }); @@ -212,9 +195,9 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, - IBSStdLexer<Spec,Comp,State,SpecState,CompState> lexer; + IBSScanner<Spec,Comp,State,SpecState,CompState> lexer; - public void setLexer(IBSStdLexer<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } + public void setLexer(IBSScanner<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } public void setAttributeClass(IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } @@ -432,19 +415,7 @@ class CUP$IBSStdParser$actions { return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 3: // iexpr ::= ifact - { - Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.peek()).left; - int eright = (CUP$IBSStdParser$stack.peek()).right; - Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); - } - return CUP$IBSStdParser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 4: // iexpr ::= iexpr PLUS ifact + case 3: // iexpr ::= iexpr PLUS iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -462,7 +433,7 @@ class CUP$IBSStdParser$actions { return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 5: // iexpr ::= iexpr MINUS ifact + case 4: // iexpr ::= iexpr MINUS iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -480,7 +451,7 @@ class CUP$IBSStdParser$actions { return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 6: // ifact ::= ifact MULT iatom + case 5: // iexpr ::= iexpr MULT iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -493,12 +464,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("ifact",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 7: // ifact ::= ifact DIV iatom + case 6: // iexpr ::= iexpr DIV iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -511,12 +482,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("ifact",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 8: // ifact ::= ifact MOD iatom + case 7: // iexpr ::= iexpr MOD iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -529,60 +500,48 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("ifact",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 9: // ifact ::= iatom + case 8: // iexpr ::= LPAR iexpr RPAR { Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.peek()).left; - int eright = (CUP$IBSStdParser$stack.peek()).right; - Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); + int eleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).left; + int eright = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).right; + Integer e = CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1).<Integer>value(); RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("ifact",2, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 10: // iatom ::= INT + case 9: // iexpr ::= MINUS iexpr { Integer RESULT =null; int eleft = (CUP$IBSStdParser$stack.peek()).left; int eright = (CUP$IBSStdParser$stack.peek()).right; Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iatom",3, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); - } - return CUP$IBSStdParser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 11: // iatom ::= LPAR iexpr RPAR - { - Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).left; - int eright = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).right; - Integer e = CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1).<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iatom",3, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + RESULT = Integer.valueOf(lexer.getExpressionClass().make_iNeg(e.intValue())); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 12: // iatom ::= MINUS iatom + case 10: // iexpr ::= INT { Integer RESULT =null; int eleft = (CUP$IBSStdParser$stack.peek()).left; int eright = (CUP$IBSStdParser$stack.peek()).right; Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = Integer.valueOf(lexer.getExpressionClass().make_iNeg(e.intValue())); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iatom",3, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1), CUP$IBSStdParser$stack.peek(), RESULT); + RESULT = e; + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("iexpr",1, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 13: // bexpr ::= bexpr OR bfact + case 11: // bexpr ::= bexpr OR bexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -592,28 +551,15 @@ class CUP$IBSStdParser$actions { int rright = (CUP$IBSStdParser$stack.peek()).right; Integer r = CUP$IBSStdParser$stack.peek().<Integer>value(); RESULT = Integer.valueOf(lexer.getExpressionClass().make_bbbOr(l.intValue(),r.intValue())); - System.out.println("BBOR: " + lexer.getExpressionClass().getBExpr(RESULT).toString()); lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",4, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 14: // bexpr ::= bfact - { - Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.peek()).left; - int eright = (CUP$IBSStdParser$stack.peek()).right; - Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",4, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); - } - return CUP$IBSStdParser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 15: // bfact ::= bfact AND batom + case 12: // bexpr ::= bexpr AND bexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -626,72 +572,48 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bfact",5, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); - } - return CUP$IBSStdParser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 16: // bfact ::= batom - { - Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.peek()).left; - int eright = (CUP$IBSStdParser$stack.peek()).right; - Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bfact",5, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); - } - return CUP$IBSStdParser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 17: // batom ::= BOOL - { - Integer RESULT =null; - int eleft = (CUP$IBSStdParser$stack.peek()).left; - int eright = (CUP$IBSStdParser$stack.peek()).right; - Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); - RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("batom",6, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 18: // batom ::= bcomp + case 13: // bexpr ::= BOOL { Integer RESULT =null; int eleft = (CUP$IBSStdParser$stack.peek()).left; int eright = (CUP$IBSStdParser$stack.peek()).right; Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("batom",6, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.peek(), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 19: // batom ::= LPAR bexpr RPAR + case 14: // bexpr ::= LPAR bexpr RPAR { Integer RESULT =null; int eleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).left; int eright = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1)).right; Integer e = CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1).<Integer>value(); RESULT = e; - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("batom",6, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 20: // batom ::= NOT bexpr + case 15: // bexpr ::= NOT bexpr { Integer RESULT =null; int eleft = (CUP$IBSStdParser$stack.peek()).left; int eright = (CUP$IBSStdParser$stack.peek()).right; Integer e = CUP$IBSStdParser$stack.peek().<Integer>value(); RESULT = Integer.valueOf(lexer.getExpressionClass().make_bNot(e.intValue())); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("batom",6, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-1), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 21: // bcomp ::= iexpr LT iexpr + case 16: // bexpr ::= iexpr LT iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -704,12 +626,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 22: // bcomp ::= iexpr GT iexpr + case 17: // bexpr ::= iexpr GT iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -722,12 +644,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 23: // bcomp ::= iexpr LEQ iexpr + case 18: // bexpr ::= iexpr LEQ iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -740,12 +662,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 24: // bcomp ::= iexpr GEQ iexpr + case 19: // bexpr ::= iexpr GEQ iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -758,12 +680,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 25: // bcomp ::= iexpr EQ iexpr + case 20: // bexpr ::= iexpr EQ iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -776,12 +698,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 26: // bcomp ::= iexpr DIF iexpr + case 21: // bexpr ::= iexpr DIF iexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -794,12 +716,12 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 27: // bcomp ::= bexpr EQ bexpr + case 22: // bexpr ::= bexpr EQ bexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -809,16 +731,15 @@ class CUP$IBSStdParser$actions { int rright = (CUP$IBSStdParser$stack.peek()).right; Integer r = CUP$IBSStdParser$stack.peek().<Integer>value(); RESULT = Integer.valueOf(lexer.getExpressionClass().make_bbbEq(l.intValue(),r.intValue())); - System.out.println("BBEQ: " + lexer.getExpressionClass().getBExpr(RESULT).toString()); lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 28: // bcomp ::= bexpr DIF bexpr + case 23: // bexpr ::= bexpr DIF bexpr { Integer RESULT =null; int lleft = (CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2)).left; @@ -831,7 +752,7 @@ class CUP$IBSStdParser$actions { lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); - CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bcomp",7, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); + CUP$IBSStdParser$result = parser.getSymbolFactory().newSymbol("bexpr",2, CUP$IBSStdParser$stack.elementAt(CUP$IBSStdParser$top-2), CUP$IBSStdParser$stack.peek(), RESULT); } return CUP$IBSStdParser$result; diff --git a/src/main/java/myutil/intboolsolver/IBSStdParserSym.java b/src/main/java/myutil/intboolsolver/IBSStdSymbol.java similarity index 83% rename from src/main/java/myutil/intboolsolver/IBSStdParserSym.java rename to src/main/java/myutil/intboolsolver/IBSStdSymbol.java index 4a6c505361..5d90a6ccff 100644 --- a/src/main/java/myutil/intboolsolver/IBSStdParserSym.java +++ b/src/main/java/myutil/intboolsolver/IBSStdSymbol.java @@ -6,30 +6,31 @@ package myutil.intboolsolver; /** CUP generated class containing symbol constants. */ -public class IBSStdParserSym { +public class IBSStdSymbol { /* terminals */ public static final int GEQ = 14; public static final int MOD = 6; public static final int AND = 7; public static final int LT = 11; public static final int PLUS = 2; - public static final int INT = 20; + public static final int INT = 21; public static final int OR = 8; public static final int NOT = 15; public static final int GT = 12; - public static final int PARSE_INT = 18; + public static final int PARSE_INT = 19; public static final int EOF = 0; public static final int MULT = 4; public static final int DIV = 5; public static final int MINUS = 3; public static final int error = 1; public static final int EQ = 9; - public static final int BOOL = 21; - public static final int PARSE_BOOL = 19; + public static final int BOOL = 22; + public static final int PARSE_BOOL = 20; public static final int LEQ = 13; public static final int RPAR = 17; public static final int LPAR = 16; public static final int DIF = 10; + public static final int UMINUS = 18; public static final String[] terminalNames = new String[] { "EOF", "error", @@ -49,6 +50,7 @@ public class IBSStdParserSym { "NOT", "LPAR", "RPAR", + "UMINUS", "PARSE_INT", "PARSE_BOOL", "INT", diff --git a/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex b/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex index e7211054b1..c7d5f32bb4 100644 --- a/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex +++ b/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex @@ -4,11 +4,14 @@ import java.util.HashSet; %% -%class IBSStdLexer< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState > +%class IBSLexerClassName +%implements IBSScanner<Spec, Comp, State, SpecState, CompState> + +%public %unicode %cup %eofval{ - return new java_cup.runtime.Symbol(IBSStdParserSym.EOF); + return new java_cup.runtime.Symbol(IBSFlex#Symb.EOF); %eofval} %yylexthrow Exception @@ -18,7 +21,7 @@ private IBSAttributeClass<Spec,Comp,State,SpecState,CompState> attrC; private IBSExpressionClass<Spec,Comp,State,SpecState,CompState> exprC; private final HashSet<String> badIdents = new HashSet<String>(); -public IBSStdLexer(){} +public IBSLexerClassName(){} public void setAttributeClass( IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _attrC) { attrC = _attrC; } public IBSAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass() { return attrC; } public void setExpressionClass( IBSExpressionClass<Spec,Comp,State,SpecState,CompState> _exprC) { exprC = _exprC; } @@ -63,44 +66,44 @@ Identifier = [a-zA-Z_][a-zA-Z0-9_\.]* %state INTBOOL %% -<YYINITIAL> "boolean" { yybegin(INTBOOL); return new Symbol(IBSStdParserSym.PARSE_BOOL); } -<YYINITIAL> "integer" { yybegin(INTBOOL); return new Symbol(IBSStdParserSym.PARSE_INT); } +<YYINITIAL> "boolean" { yybegin(INTBOOL); return new Symbol(IBSFlex#Symb.PARSE_BOOL); } +<YYINITIAL> "integer" { yybegin(INTBOOL); return new Symbol(IBSFlex#Symb.PARSE_INT); } <YYINITIAL> {Space} {} <INTBOOL> { {Space} {} - "true" { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(true))); } - "false" { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(false))); } - {Natural} { try { return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(Integer.parseInt(yytext()))));} + "true" { return new Symbol(IBSFlex#Symb.BOOL, Integer.valueOf(exprC.make_bConst(true))); } + "false" { return new Symbol(IBSFlex#Symb.BOOL, Integer.valueOf(exprC.make_bConst(false))); } + {Natural} { try { return new Symbol(IBSFlex#Symb.INT, Integer.valueOf(exprC.make_iConst(Integer.parseInt(yytext()))));} catch (NumberFormatException nfe) { throw new Exception ("Lexer : Integer Format : " + yytext()); } } - "+" { return new Symbol(IBSStdParserSym.PLUS); } - "-" { return new Symbol(IBSStdParserSym.MINUS); } - "*" { return new Symbol(IBSStdParserSym.MULT); } - "/" { return new Symbol(IBSStdParserSym.DIV); } - "%" { return new Symbol(IBSStdParserSym.MOD); } - "&&" { return new Symbol(IBSStdParserSym.AND); } - "and" { return new Symbol(IBSStdParserSym.AND); } - "||" { return new Symbol(IBSStdParserSym.OR); } - "or" { return new Symbol(IBSStdParserSym.OR); } - "!" { return new Symbol(IBSStdParserSym.NOT); } - "not" { return new Symbol(IBSStdParserSym.NOT); } - "==" { return new Symbol(IBSStdParserSym.EQ); } - "!=" { return new Symbol(IBSStdParserSym.DIF); } - "<" { return new Symbol(IBSStdParserSym.LT); } - ">" { return new Symbol(IBSStdParserSym.GT); } - "<=" { return new Symbol(IBSStdParserSym.LEQ); } - ">=" { return new Symbol(IBSStdParserSym.GEQ); } - "(" { return new Symbol(IBSStdParserSym.LPAR); } - ")" { return new Symbol(IBSStdParserSym.RPAR); } + "+" { return new Symbol(IBSFlex#Symb.PLUS); } + "-" { return new Symbol(IBSFlex#Symb.MINUS); } + "*" { return new Symbol(IBSFlex#Symb.MULT); } + "/" { return new Symbol(IBSFlex#Symb.DIV); } + "%" { return new Symbol(IBSFlex#Symb.MOD); } + "&&" { return new Symbol(IBSFlex#Symb.AND); } + "and" { return new Symbol(IBSFlex#Symb.AND); } + "||" { return new Symbol(IBSFlex#Symb.OR); } + "or" { return new Symbol(IBSFlex#Symb.OR); } + "!" { return new Symbol(IBSFlex#Symb.NOT); } + "not" { return new Symbol(IBSFlex#Symb.NOT); } + "==" { return new Symbol(IBSFlex#Symb.EQ); } + "!=" { return new Symbol(IBSFlex#Symb.DIF); } + "<" { return new Symbol(IBSFlex#Symb.LT); } + ">" { return new Symbol(IBSFlex#Symb.GT); } + "<=" { return new Symbol(IBSFlex#Symb.LEQ); } + ">=" { return new Symbol(IBSFlex#Symb.GEQ); } + "(" { return new Symbol(IBSFlex#Symb.LPAR); } + ")" { return new Symbol(IBSFlex#Symb.RPAR); } {Identifier} { IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = attrHandler.getTypedAttribute(yytext()); switch(attr.getType()) { case IBSAttributeClass.NullAttr : badIdents.add(yytext()); throw new Exception ("Bad Ident : " + yytext()); - case IBSAttributeClass.BoolConst : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); - case IBSAttributeClass.IntConst : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); - case IBSAttributeClass.BoolAttr : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); - case IBSAttributeClass.IntAttr : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); + case IBSAttributeClass.BoolConst : return new Symbol(IBSFlex#Symb.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); + case IBSAttributeClass.IntConst : return new Symbol(IBSFlex#Symb.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); + case IBSAttributeClass.BoolAttr : return new Symbol(IBSFlex#Symb.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); + case IBSAttributeClass.IntAttr : return new Symbol(IBSFlex#Symb.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); default : throw new Error ("Lexer, BUG : bad attribute type"); } } diff --git a/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup b/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup index c253d606f4..0f56fff307 100644 --- a/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup +++ b/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup @@ -4,16 +4,16 @@ import java_cup.runtime.*; import java.util.HashSet; -class IBSStdParser; +/* class IBSStdParser; */ /* To add in generated file: < Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState > */ parser code {: - IBSStdLexer<Spec,Comp,State,SpecState,CompState> lexer; + IBSScanner<Spec,Comp,State,SpecState,CompState> lexer; - public void setLexer(IBSStdLexer<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } + public void setLexer(IBSScanner<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } public void setAttributeClass(IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } @@ -170,15 +170,14 @@ parser code {: /* Terminals (tokens returned by the scanner). */ terminal PLUS, MINUS, MULT, DIV, MOD, AND, OR, EQ, DIF, LT, GT, LEQ, GEQ; -terminal NOT, LPAR, RPAR; +terminal NOT, LPAR, RPAR, UMINUS; terminal PARSE_INT, PARSE_BOOL; terminal Integer INT, BOOL; /* Non terminals */ non terminal IBSExpressionClass<Spec,Comp,State,SpecState,CompState>.Expr expr; -non terminal Integer iexpr, ifact, iatom; -non terminal Integer bexpr, bfact, batom, bcomp; +non terminal Integer iexpr, bexpr; /* Precedences (probably useless for the current grammar) */ precedence left OR; @@ -188,6 +187,7 @@ precedence left EQ, DIF; precedence nonassoc GT, LT, LEQ, GEQ; precedence left PLUS, MINUS; precedence left MULT, DIV, MOD; +precedence left UMINUS; /* The grammar */ @@ -199,72 +199,51 @@ expr ::= ; iexpr ::= - ifact:e {: RESULT = e; :} - | iexpr:l PLUS ifact:r + iexpr:l PLUS iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iiiPlus(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); :} - | iexpr:l MINUS ifact:r + | iexpr:l MINUS iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iiiMinus(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); :} -; - -ifact ::= - ifact:l MULT iatom:r + | iexpr:l MULT iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iiiMult(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); :} - | ifact:l DIV iatom:r + | iexpr:l DIV iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iiiDiv(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); :} - | ifact:l MOD iatom:r + | iexpr:l MOD iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iiiMod(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); :} - | iatom:e {: RESULT = e; :} -; - -iatom ::= - INT:e {: RESULT = e; :} - | LPAR iexpr:e RPAR {: RESULT = e; :} - | MINUS iatom:e {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iNeg(e.intValue())); :} + | LPAR iexpr:e RPAR {: RESULT = e; :} + | MINUS iexpr:e {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_iNeg(e.intValue())); :} %prec UMINUS + | INT:e {: RESULT = e; :} ; bexpr ::= - bexpr:l OR bfact:r + bexpr:l OR bexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_bbbOr(l.intValue(),r.intValue())); - System.out.println("BBOR: " + lexer.getExpressionClass().getBExpr(RESULT).toString()); lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); :} - | bfact:e {: RESULT = e; :} -; - -bfact ::= - bfact:l AND batom:r + | bexpr:l AND bexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_bbbAnd(l.intValue(),r.intValue())); lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); :} - | batom:e {: RESULT = e; :} -; - -batom ::= - BOOL:e {: RESULT = e; :} - | bcomp:e {: RESULT = e; :} + | BOOL:e {: RESULT = e; :} | LPAR bexpr:e RPAR {: RESULT = e; :} | NOT bexpr:e {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_bNot(e.intValue())); :} -; - -bcomp ::= - iexpr:l LT iexpr:r + | iexpr:l LT iexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_biiLt(l.intValue(),r.intValue())); lexer.getExpressionClass().freeInt(l.intValue()); lexer.getExpressionClass().freeInt(r.intValue()); @@ -296,7 +275,6 @@ bcomp ::= :} | bexpr:l EQ bexpr:r {: RESULT = Integer.valueOf(lexer.getExpressionClass().make_bbbEq(l.intValue(),r.intValue())); - System.out.println("BBEQ: " + lexer.getExpressionClass().getBExpr(RESULT).toString()); lexer.getExpressionClass().freeBool(l.intValue()); lexer.getExpressionClass().freeBool(r.intValue()); :} diff --git a/src/main/java/myutil/intboolsolver/javacup/compile b/src/main/java/myutil/intboolsolver/javacup/compile index 926336ba29..a41b66a71b 100755 --- a/src/main/java/myutil/intboolsolver/javacup/compile +++ b/src/main/java/myutil/intboolsolver/javacup/compile @@ -1,9 +1,23 @@ -jflex IBSStdLexer.jflex -java-cup -expect 2 IBSStdParser.jcup -sed "s/class IBSStdLexer/public class IBSStdLexer/" IBSStdLexer.java > IBSStdLexer1.java -sed "s/class IBSStdParser/class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState >/" IBSStdParser.java > IBSStdParser1.java -rm IBSStdParser.java -mv IBSStdParser1.java IBSStdParser.java -rm IBSStdLexer.java -mv IBSStdLexer1.java IBSStdLexer.java -mv IBSStdParser.java IBSStdLexer.java IBSStdParserSym.java .. +#!/bin/sh + +JFLEX_FILE="IBSStdLexer.jflex" +JAVACUP_FILE="IBSStdParser.jcup" +LEXER_CLASS="IBSStdLexer" +PARSER_CLASS="IBSStdParser" +SYMBOL_CLASS="IBSStdSymbol" + +sed "s/IBSLexerClassName/$LEXER_CLASS/g" $JFLEX_FILE > __tmplexer.jflex +sed "s/IBSFlex#Symb/$SYMBOL_CLASS/g" __tmplexer.jflex > __tmplexer2.jflex +jflex __tmplexer2.jflex +sed "s/public class $LEXER_CLASS/public class $LEXER_CLASS< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState >/" $LEXER_CLASS.java > __tmplexer.java +rm $LEXER_CLASS.java +mv __tmplexer.java $LEXER_CLASS.java +rm __tmplexer.jflex __tmplexer2.jflex + +java-cup -parser $PARSER_CLASS -symbols $SYMBOL_CLASS $JAVACUP_FILE + +sed "s/class $PARSER_CLASS/class $PARSER_CLASS< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState >/" $PARSER_CLASS.java > __tmpparser.java + +rm $PARSER_CLASS.java *~ +mv __tmpparser.java $PARSER_CLASS.java +mv $LEXER_CLASS.java $PARSER_CLASS.java $SYMBOL_CLASS.java .. diff --git a/src/main/java/myutil/intboolsolver/javacup/test.tgz b/src/main/java/myutil/intboolsolver/javacup/test.tgz deleted file mode 100644 index 3af7ff39682d0d9e7298327feafd63bfb2ba99ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2156 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 Sfe(!z<C~g47cc}cFaQ7reMv0< -- GitLab