diff --git a/graphminimize/build.gradle b/graphminimize/build.gradle index 7b80aed76291c63367b4130fd27ad81bf96a9b28..a96b2cdc43c3cae5c622a5e80da005703375b941 100644 --- a/graphminimize/build.gradle +++ b/graphminimize/build.gradle @@ -20,6 +20,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'gs-core-2.0' compileOnly name: 'gs-algo-2.0' compileOnly name: 'gs-ui-swing-2.0' diff --git a/graphshow/build.gradle b/graphshow/build.gradle index d784aed8571f9a8a8db3c1e3df216aa32e0f011c..7cfae83b48a64b0591b6e4b947865319d94e9e6a 100644 --- a/graphshow/build.gradle +++ b/graphshow/build.gradle @@ -15,6 +15,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' implementation name: 'gs-core-2.0' implementation name: 'gs-algo-2.0' implementation name: 'gs-ui-swing-2.0' diff --git a/launcher/build.gradle b/launcher/build.gradle index 1c07d24e9fd6692611802b5dce1a71027bde42ab..5a88f6c61975608980bf64f75d6f1e4cc3931d6d 100644 --- a/launcher/build.gradle +++ b/launcher/build.gradle @@ -12,6 +12,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' implementation name: 'commons-codec-1.10' compileOnly name: 'commons-io-2.5' compileOnly name: 'jsoup-1.8.1' diff --git a/rundse/build.gradle b/rundse/build.gradle index 3727e528329e539b53e1af9c351d8a361434e711..0b0b7ccd02a70228afd2b945019d99c36f0742f5 100644 --- a/rundse/build.gradle +++ b/rundse/build.gradle @@ -10,6 +10,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'opencloud' compileOnly name: 'JavaPlot' compileOnly name: 'derbynet' diff --git a/simulationcontrol/build.gradle b/simulationcontrol/build.gradle index 7cafd684afc537f2a1894b935db9ebf06b15da57..a88b8d7f0b151971afdeebde600065d6543d55d7 100644 --- a/simulationcontrol/build.gradle +++ b/simulationcontrol/build.gradle @@ -13,6 +13,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' implementation name: 'jsoup-1.8.1' } diff --git a/src/main/java/avatartranslator/AvatarSyntaxChecker.java b/src/main/java/avatartranslator/AvatarSyntaxChecker.java index ed5800c4fb3535187e8fa1269e0928bc89d85583..9a79c7c3f0fb2488ad429d3d6f34adb03b8eaef1 100644 --- a/src/main/java/avatartranslator/AvatarSyntaxChecker.java +++ b/src/main/java/avatartranslator/AvatarSyntaxChecker.java @@ -47,7 +47,6 @@ import compiler.tmlparser.TokenMgrError; import myutil.Conversion; import myutil.NameChecker; import myutil.TraceManager; -import avatartranslator.intboolsolver.AvatarIBSParser; import java.io.StringReader; import java.util.ArrayList; diff --git a/src/main/java/avatartranslator/intboolsolver/AvatarIBSExpressionClass.java b/src/main/java/avatartranslator/intboolsolver/AvatarIBSExpressionClass.java index 5043706c2db5c36890da6d515fe33862595c9ebe..cb571acc3580c2b770cc55ef42791e39380f3a17 100644 --- a/src/main/java/avatartranslator/intboolsolver/AvatarIBSExpressionClass.java +++ b/src/main/java/avatartranslator/intboolsolver/AvatarIBSExpressionClass.java @@ -53,7 +53,7 @@ import myutil.intboolsolver.*; * <p> It is provided for documentation together with * {@link IBSStdClosedFormulaAttributeClass * IBSStdClosedFormulaAttribute} and - * {@link AvatarIBSParser + * {@link AvatarIBSOriginParser * IBSStdClosedFormulaSolver}}</p> * * <p>These three diff --git a/src/main/java/avatartranslator/intboolsolver/AvatarIBSParser.java b/src/main/java/avatartranslator/intboolsolver/AvatarIBSOriginParser.java similarity index 96% rename from src/main/java/avatartranslator/intboolsolver/AvatarIBSParser.java rename to src/main/java/avatartranslator/intboolsolver/AvatarIBSOriginParser.java index bb9e19d06e91ac07142379425c8e2306f31c6064..d3c956ad6891deced175f57709543168fdd4bd0b 100644 --- a/src/main/java/avatartranslator/intboolsolver/AvatarIBSParser.java +++ b/src/main/java/avatartranslator/intboolsolver/AvatarIBSOriginParser.java @@ -71,16 +71,16 @@ import myutil.intboolsolver.*; * @author Sophie Coudert */ -public class AvatarIBSParser extends IBSOriginParser< +public class AvatarIBSOriginParser extends IBSOriginParser< AvatarSpecification, AvatarBlock, AvatarStateMachineElement, SpecificationState, SpecificationBlock> { - public AvatarIBSParser() { + public AvatarIBSOriginParser() { super(new AvatarIBSAttributeClass(),new AvatarIBSExpressionClass()); } - public AvatarIBSParser( + public AvatarIBSOriginParser( IBSAttributeClass< AvatarSpecification, AvatarBlock, diff --git a/src/main/java/avatartranslator/intboolsolver/AvatarIBSStdParser.java b/src/main/java/avatartranslator/intboolsolver/AvatarIBSStdParser.java new file mode 100644 index 0000000000000000000000000000000000000000..1444f1b5ac589c9d9222358468367d2ba63b7e30 --- /dev/null +++ b/src/main/java/avatartranslator/intboolsolver/AvatarIBSStdParser.java @@ -0,0 +1,102 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ + +package avatartranslator.intboolsolver; + +import avatartranslator.AvatarBlock; +import avatartranslator.AvatarSpecification; +import avatartranslator.AvatarStateMachineElement; +import avatartranslator.modelchecker.SpecificationBlock; +import avatartranslator.modelchecker.SpecificationState; +import myutil.intboolsolver.*; + +/** + * class IBSStdClosedFormulaSolver is a complete implementation + * and instantiation of {@link IBSOriginParser + * IBSolver} for closed Formulas. + * + * <p> It is provided for documentation together with + * {@link IBSStdClosedFormulaAttributeClass + * IBSStdClosedFormulaAttributeClass} and + * {@link IBSStdClosedFormulaAttributeClass + * IBSStdClosedFormulaAttribute}}</p> + * + * <p>These three + * classes provides the same features as + * {@link IBSClosedFormulaAttributeClass + * IBSClosedFormulaAttribute}, + * {@link IBSClosedFormulaAttributeClass + * IBSClosedFormulaAttributeClass} and + * {@link IBSClosedFormulaParser + * IBSClosedFormulaSolver} (together).</p> + * + * Creation: 07/03/2023 + * + * @version 0.1 07/03/2023 + * @author Sophie Coudert + */ + +public class AvatarIBSStdParser extends IBSStdParser< + AvatarSpecification, + AvatarBlock, + AvatarStateMachineElement, + SpecificationState, + SpecificationBlock> { + public AvatarIBSStdParser() { + super(); + setAttributeClass(new AvatarIBSAttributeClass()); + setExpressionClass(new AvatarIBSExpressionClass()); + } + public AvatarIBSStdParser( + IBSAttributeClass< + AvatarSpecification, + AvatarBlock, + AvatarStateMachineElement, + SpecificationState, + SpecificationBlock> _c, + IBSExpressionClass< + AvatarSpecification, + AvatarBlock, + AvatarStateMachineElement, + SpecificationState, + SpecificationBlock> _e) { + super(); + setAttributeClass(_c); + setExpressionClass(_e); + } +} \ No newline at end of file diff --git a/src/main/java/avatartranslator/intboolsolver/AvatarIBSolver.java b/src/main/java/avatartranslator/intboolsolver/AvatarIBSolver.java index 44df3cfb769090270243b43bd3ba2e12e444da33..a1742b1aef58fa7449df11d3b48a1ad52433c5c6 100644 --- a/src/main/java/avatartranslator/intboolsolver/AvatarIBSolver.java +++ b/src/main/java/avatartranslator/intboolsolver/AvatarIBSolver.java @@ -4,5 +4,5 @@ public class AvatarIBSolver { public static AvatarIBSAttributeClass attrC = new AvatarIBSAttributeClass(); protected static AvatarIBSExpressionClass exprC = new AvatarIBSExpressionClass(); - public static AvatarIBSParser parser = new AvatarIBSParser(attrC,exprC); + public static AvatarIBSStdParser parser = new AvatarIBSStdParser(attrC,exprC); } diff --git a/src/main/java/myutil/intboolsolver/IBSStdLexer.java b/src/main/java/myutil/intboolsolver/IBSStdLexer.java index deb1a1084090df47f74f4fc4a3048fda8b12a92f..214a412818f2141b368e3b8d98471cb4e21eceec 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 05/04/2023 14:20 */ +/* The following code was generated by JFlex 1.4.3 on 05/04/2023 15:54 */ package myutil.intboolsolver; import java_cup.runtime.*; @@ -8,7 +8,7 @@ import java.util.HashSet; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.4.3 - * on 05/04/2023 14:20 from the specification file + * on 05/04/2023 15:54 from the specification file * <tt>IBSStdLexer.jflex</tt> */ class IBSStdLexer< Spec extends IBSParamSpec, Comp extends IBSParamComp, State extends IBSParamState, SpecState extends IBSParamSpecState, CompState extends IBSParamCompState > implements java_cup.runtime.Scanner { @@ -251,24 +251,24 @@ class IBSStdLexer< Spec extends IBSParamSpec, Comp extends IBSParamComp, State e private boolean zzEOFDone; /* user code: */ -private IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> attrC; +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 void setAttributeClass( IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> _attrC) { attrC = _attrC; } -public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass() { return attrC; } +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; } public IBSExpressionClass<Spec,Comp,State,SpecState,CompState> getExpressionClass() { return exprC; } public HashSet<String> getBadIdents() { return badIdents; } public void clearBadIdents() { badIdents.clear(); } private abstract class AttrHandler { - public abstract IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception; + public abstract IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception; } private class ClosedAttrHandler extends AttrHandler { ClosedAttrHandler(){}; - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception { badIdents.add(_s); throw new Exception ("Ident in closed expression: " + _s); } @@ -276,14 +276,14 @@ private class ClosedAttrHandler extends AttrHandler { private class SpecAttrHandler extends AttrHandler { private Spec spec; SpecAttrHandler(Spec _spec){ spec = _spec; } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ return attrC.getTypedAttribute(spec,_s); } } private class CompAttrHandler extends AttrHandler { private Comp comp; CompAttrHandler(Comp _comp){ comp = _comp; } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ return attrC.getTypedAttribute(comp,_s); } } @@ -614,86 +614,86 @@ public void init(Comp _comp, String _s) throws java.io.IOException { attrHandler { return new Symbol(IBSStdParserSym.LT); } 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 27: break; case 19: { return new Symbol(IBSStdParserSym.GEQ); } - case 27: break; + case 28: break; case 8: { return new Symbol(IBSStdParserSym.MOD); } - case 28: break; + case 29: break; case 11: { return new Symbol(IBSStdParserSym.GT); } - case 29: break; + case 30: break; case 18: { return new Symbol(IBSStdParserSym.LEQ); } - case 30: break; + case 31: break; case 17: { return new Symbol(IBSStdParserSym.EQ); } - case 31: break; + case 32: break; case 14: { return new Symbol(IBSStdParserSym.OR); } - case 32: break; + case 33: break; case 4: { return new Symbol(IBSStdParserSym.PLUS); } - case 33: break; + case 34: break; case 21: { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(false))); } - case 34: break; + case 35: break; case 13: { return new Symbol(IBSStdParserSym.RPAR); } - case 35: break; + case 36: break; case 5: { return new Symbol(IBSStdParserSym.MINUS); } - case 36: break; + case 37: break; case 22: { yybegin(INTBOOL); return new Symbol(IBSStdParserSym.PARSE_BOOL); } - case 37: break; + case 38: break; case 15: { return new Symbol(IBSStdParserSym.AND); } - case 38: break; + case 39: break; case 9: { return new Symbol(IBSStdParserSym.NOT); } - case 39: break; + case 40: break; case 7: { return new Symbol(IBSStdParserSym.DIV); } - case 40: break; + case 41: break; case 6: { return new Symbol(IBSStdParserSym.MULT); } - case 41: break; + case 42: break; case 12: { return new Symbol(IBSStdParserSym.LPAR); } - case 42: break; + case 43: break; case 20: { return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(true))); } - case 43: break; - case 3: - { IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = - attrHandler.getTypedAttribute(yytext()); - switch(attr.getType()) { - case IBSStdAttributeClass.NullAttr : badIdents.add(yytext()); throw new Exception ("Bad Ident : " + yytext()); - case IBSStdAttributeClass.BoolConst : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); - case IBSStdAttributeClass.IntConst : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); - case IBSStdAttributeClass.BoolAttr : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); - case IBSStdAttributeClass.IntAttr : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); - default : throw new Error ("Lexer, BUG : bad attribute type"); - } - } case 44: break; case 2: { try { return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(Integer.parseInt(yytext()))));} diff --git a/src/main/java/myutil/intboolsolver/IBSStdParser.java b/src/main/java/myutil/intboolsolver/IBSStdParser.java index 87234659b02e15f5f9879680c71790eb1ee583f4..5431c49dfe3edd04dec172a47ed4e2fec52e4308 100644 --- a/src/main/java/myutil/intboolsolver/IBSStdParser.java +++ b/src/main/java/myutil/intboolsolver/IBSStdParser.java @@ -216,9 +216,9 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, public void setLexer(IBSStdLexer<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } - public void setAttributeClass(IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } + public void setAttributeClass(IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass(){ return lexer.getAttributeClass(); } + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass(){ return lexer.getAttributeClass(); } public void setExpressionClass(IBSExpressionClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setExpressionClass(_c); } @@ -296,6 +296,77 @@ public class IBSStdParser< Spec extends IBSParamSpec, Comp extends IBSParamComp, return null; } + // A DEPLACER ... + + public int indexOfVariable(String expr, String variable) { + int index; + String tmp = expr; + int removed = 0; + //System.out.println("\nHandling expr: " + expr); + + while ((index = tmp.indexOf(variable)) > -1) { + char c1, c2; + if (index > 0) { + c1 = tmp.charAt(index - 1); + } else { + c1 = ' '; + } + + if (index + variable.length() < tmp.length()) + c2 = tmp.charAt(index + variable.length()); + else + c2 = ' '; + + //System.out.println("tmp=" + tmp + " c1=" + c1 + " c2=" + c2); + + if (!(Character.isLetterOrDigit(c1) || (c1 == '_'))) { + if (!(Character.isLetterOrDigit(c2) || (c2 == '_'))) { + //System.out.println("Found at index=" + index + " returnedIndex=" + (index+removed)); + return index + removed; + } + } + tmp = tmp.substring(index + variable.length(), tmp.length()); + //System.out.println("tmp=" + tmp); + removed = index + variable.length(); + if (tmp.length() == 0) { + return -1; + } + // We cut until we find a non alphanumerical character + while (Character.isLetterOrDigit(tmp.charAt(0)) || (tmp.charAt(0) == '_')) { + tmp = tmp.substring(1, tmp.length()); + if (tmp.length() == 0) { + return -1; + } + removed++; + } + //System.out.println("after remove: tmp=" + tmp); + + } + return -1; + } + + + public String replaceVariable(String expr, String oldVariable, String newVariable) { + if (oldVariable.compareTo(newVariable) == 0) { + return expr; + } + int index; + String tmp = expr; + + while ((index = indexOfVariable(tmp, oldVariable)) > -1) { + String tmp1 = ""; + if (index > 0) { + tmp1 = tmp.substring(0, index); + } + tmp1 += newVariable; + tmp1 += tmp.substring(index + oldVariable.length(), tmp.length()); + tmp = tmp1; + } + + return tmp; + } + + /** Cup generated class to encapsulate user supplied action code.*/ class CUP$IBSStdParser$actions { diff --git a/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex b/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex index 119873a5eb93556e389ae5b676c4f2c717431b25..e7211054b1a179543c182489279ad6d0bed8d46b 100644 --- a/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex +++ b/src/main/java/myutil/intboolsolver/javacup/IBSStdLexer.jflex @@ -14,24 +14,24 @@ import java.util.HashSet; %yylexthrow Exception %{ -private IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> attrC; +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 void setAttributeClass( IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> _attrC) { attrC = _attrC; } -public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass() { return attrC; } +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; } public IBSExpressionClass<Spec,Comp,State,SpecState,CompState> getExpressionClass() { return exprC; } public HashSet<String> getBadIdents() { return badIdents; } public void clearBadIdents() { badIdents.clear(); } private abstract class AttrHandler { - public abstract IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception; + public abstract IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception; } private class ClosedAttrHandler extends AttrHandler { ClosedAttrHandler(){}; - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s) throws Exception { badIdents.add(_s); throw new Exception ("Ident in closed expression: " + _s); } @@ -39,14 +39,14 @@ private class ClosedAttrHandler extends AttrHandler { private class SpecAttrHandler extends AttrHandler { private Spec spec; SpecAttrHandler(Spec _spec){ spec = _spec; } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ return attrC.getTypedAttribute(spec,_s); } } private class CompAttrHandler extends AttrHandler { private Comp comp; CompAttrHandler(Comp _comp){ comp = _comp; } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute getTypedAttribute(String _s){ return attrC.getTypedAttribute(comp,_s); } } @@ -93,14 +93,14 @@ Identifier = [a-zA-Z_][a-zA-Z0-9_\.]* ">=" { return new Symbol(IBSStdParserSym.GEQ); } "(" { return new Symbol(IBSStdParserSym.LPAR); } ")" { return new Symbol(IBSStdParserSym.RPAR); } - {Identifier} { IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = + {Identifier} { IBSAttributeClass<Spec,Comp,State,SpecState,CompState>.TypedAttribute attr = attrHandler.getTypedAttribute(yytext()); switch(attr.getType()) { - case IBSStdAttributeClass.NullAttr : badIdents.add(yytext()); throw new Exception ("Bad Ident : " + yytext()); - case IBSStdAttributeClass.BoolConst : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bConst(attr.getConstant()!=0))); - case IBSStdAttributeClass.IntConst : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iConst(attr.getConstant()))); - case IBSStdAttributeClass.BoolAttr : return new Symbol(IBSStdParserSym.BOOL, Integer.valueOf(exprC.make_bVar(attr.getAttribute()))); - case IBSStdAttributeClass.IntAttr : return new Symbol(IBSStdParserSym.INT, Integer.valueOf(exprC.make_iVar(attr.getAttribute()))); + 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"); } } diff --git a/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup b/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup index 9c994c47e0f17c118e8a2a7e28aa6f6098a88dad..57896f8647766b2674fc4d85c13f83d547bfdc58 100644 --- a/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup +++ b/src/main/java/myutil/intboolsolver/javacup/IBSStdParser.jcup @@ -15,9 +15,9 @@ parser code {: public void setLexer(IBSStdLexer<Spec,Comp,State,SpecState,CompState> _lexer){ lexer=_lexer; setScanner(_lexer); } - public void setAttributeClass(IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } + public void setAttributeClass(IBSAttributeClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setAttributeClass(_c); } - public IBSStdAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass(){ return lexer.getAttributeClass(); } + public IBSAttributeClass<Spec,Comp,State,SpecState,CompState> getAttributeClass(){ return lexer.getAttributeClass(); } public void setExpressionClass(IBSExpressionClass<Spec,Comp,State,SpecState,CompState> _c){ lexer.setExpressionClass(_c); } @@ -94,6 +94,77 @@ parser code {: // if (index==-1) syntaxError=true; else syntaxError=false; return null; } + + // A DEPLACER ... + + public int indexOfVariable(String expr, String variable) { + int index; + String tmp = expr; + int removed = 0; + //System.out.println("\nHandling expr: " + expr); + + while ((index = tmp.indexOf(variable)) > -1) { + char c1, c2; + if (index > 0) { + c1 = tmp.charAt(index - 1); + } else { + c1 = ' '; + } + + if (index + variable.length() < tmp.length()) + c2 = tmp.charAt(index + variable.length()); + else + c2 = ' '; + + //System.out.println("tmp=" + tmp + " c1=" + c1 + " c2=" + c2); + + if (!(Character.isLetterOrDigit(c1) || (c1 == '_'))) { + if (!(Character.isLetterOrDigit(c2) || (c2 == '_'))) { + //System.out.println("Found at index=" + index + " returnedIndex=" + (index+removed)); + return index + removed; + } + } + tmp = tmp.substring(index + variable.length(), tmp.length()); + //System.out.println("tmp=" + tmp); + removed = index + variable.length(); + if (tmp.length() == 0) { + return -1; + } + // We cut until we find a non alphanumerical character + while (Character.isLetterOrDigit(tmp.charAt(0)) || (tmp.charAt(0) == '_')) { + tmp = tmp.substring(1, tmp.length()); + if (tmp.length() == 0) { + return -1; + } + removed++; + } + //System.out.println("after remove: tmp=" + tmp); + + } + return -1; + } + + + public String replaceVariable(String expr, String oldVariable, String newVariable) { + if (oldVariable.compareTo(newVariable) == 0) { + return expr; + } + int index; + String tmp = expr; + + while ((index = indexOfVariable(tmp, oldVariable)) > -1) { + String tmp1 = ""; + if (index > 0) { + tmp1 = tmp.substring(0, index); + } + tmp1 += newVariable; + tmp1 += tmp.substring(index + oldVariable.length(), tmp.length()); + tmp = tmp1; + } + + return tmp; + } + :} 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 Binary files a/src/main/java/myutil/intboolsolver/javacup/test.tgz and /dev/null differ diff --git a/tiftranslator/build.gradle b/tiftranslator/build.gradle index ba45b1d91d7ecdfcbaeb36982ab7501e4f67e6a7..36c342267821e90ade9b3cc66116e21eb86b5f33 100644 --- a/tiftranslator/build.gradle +++ b/tiftranslator/build.gradle @@ -17,6 +17,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'commons-io-2.5' compileOnly name: 'jsoup-1.8.1' compileOnly name: 'commons-codec-1.10' diff --git a/tmltranslator/build.gradle b/tmltranslator/build.gradle index 91195ae974eecb01fbddf1b88f64750d3cc026e3..61d653a683d8fed1ba67b39f7ea01b0232f8379e 100644 --- a/tmltranslator/build.gradle +++ b/tmltranslator/build.gradle @@ -10,6 +10,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'opencloud' compileOnly name: 'JavaPlot' compileOnly name: 'derbynet' diff --git a/ttool-cli/build.gradle b/ttool-cli/build.gradle index a5e309691bf8e75f697094bc3581c4cdcbdcaa48..681b99068fac81ce500999966b9e7f3cc6935188 100644 --- a/ttool-cli/build.gradle +++ b/ttool-cli/build.gradle @@ -19,6 +19,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' implementation name: 'opencloud' implementation name: 'JavaPlot' implementation name: 'derbynet' diff --git a/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java b/ttool/src/test/java/avatartranslator/AvatarIBSOriginParserTest.java similarity index 98% rename from ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java rename to ttool/src/test/java/avatartranslator/AvatarIBSOriginParserTest.java index 98f149e71ffcd70c6477b35ebd06fe2b1b3b697d..68af7a033fa9d8ae3d16dcab84de72a2e065fa38 100644 --- a/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java +++ b/ttool/src/test/java/avatartranslator/AvatarIBSOriginParserTest.java @@ -44,7 +44,7 @@ */ package avatartranslator; import avatartranslator.intboolsolver.AvatarIBSExpressionClass; -import avatartranslator.intboolsolver.AvatarIBSParser; +import avatartranslator.intboolsolver.AvatarIBSOriginParser; import avatartranslator.intboolsolver.AvatarIBSAttributeClass; import avatartranslator.modelchecker.SpecificationBlock; import avatartranslator.modelchecker.SpecificationState; @@ -56,15 +56,15 @@ import java.util.ArrayList; import static org.junit.Assert.*; -public class AvatarIBSParserTest { +public class AvatarIBSOriginParserTest { private AvatarSpecification as; private AvatarBlock block1, block2; private AvatarIBSAttributeClass attC = new AvatarIBSAttributeClass(); private AvatarIBSExpressionClass expr = new AvatarIBSExpressionClass(); - private AvatarIBSParser parser = new AvatarIBSParser(attC,expr); - public AvatarIBSParserTest() { + private AvatarIBSOriginParser parser = new AvatarIBSOriginParser(attC,expr); + public AvatarIBSOriginParserTest() { } @Before diff --git a/webcrawler/client/build.gradle b/webcrawler/client/build.gradle index c8b3d8c5b54e5ef30f2dccbb9f1f958fa53f41e2..389fdee413964edec22aa6832fb619ce6a7a9e97 100644 --- a/webcrawler/client/build.gradle +++ b/webcrawler/client/build.gradle @@ -12,6 +12,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'commons-codec-1.10' compileOnly name: 'jsoup-1.8.1' compileOnly name: 'commons-io-2.5' diff --git a/webcrawler/server/build.gradle b/webcrawler/server/build.gradle index 9ee6566d14d869982cf53216c17769eb7260199a..98cf4fc26e55d10791aafcc003e170ede4285f2f 100644 --- a/webcrawler/server/build.gradle +++ b/webcrawler/server/build.gradle @@ -12,6 +12,7 @@ sourceSets { } dependencies { + implementation name: 'java_cup' compileOnly name: 'commons-codec-1.10' compileOnly name: 'jsoup-1.8.1' implementation name: 'commons-io-2.5'