From 849c9f1a4e60fce81a359cdf7c2884a5c1ab0fbc Mon Sep 17 00:00:00 2001 From: pechoux <romain.pechoux@loria.fr> Date: Tue, 14 Jan 2020 18:53:41 +0100 Subject: [PATCH] Operators class renamed as TypingEnvironment + operators attribute renamed as te --- src/main/java/Main.java | 4 ++-- src/main/java/complexityparser/Model.java | 6 +++--- .../tierTypingVisitors/FinalPass.java | 2 +- .../tierTypingVisitors/FirstPass.java | 2 +- .../tierTypingVisitors/SecondPass.java | 2 +- .../base/BaseExpressionVisitor.java | 6 +++--- .../tierTypingVisitors/base/BaseVisitor.java | 6 +++--- .../tierTypingVisitors/base/ObjectVisitor.java | 4 ++-- .../java/complexityparser/types/Operator.java | 2 +- .../types/env/OperatorTypingEnvBuilder.java | 14 +++++++------- .../types/env/{Operators.java => TypingEnv.java} | 16 ++++++++-------- 11 files changed, 32 insertions(+), 32 deletions(-) rename src/main/java/complexityparser/types/env/{Operators.java => TypingEnv.java} (96%) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index cb43847..1f8d878 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -15,7 +15,7 @@ limitations under the License. */ import complexityparser.Model; -import complexityparser.types.env.Operators; +import complexityparser.types.env.TypingEnv; import view.MainFrame; import java.io.IOException; @@ -24,7 +24,7 @@ public class Main { public static void main(String[] args) { try { - Operators.loadInstanceFromFile(); + TypingEnv.loadInstanceFromFile(); } catch (IOException e) { System.err.println("Operator config file load failed, exiting"); System.exit(1); diff --git a/src/main/java/complexityparser/Model.java b/src/main/java/complexityparser/Model.java index 3fcbe15..2c3eebe 100644 --- a/src/main/java/complexityparser/Model.java +++ b/src/main/java/complexityparser/Model.java @@ -21,7 +21,7 @@ import complexityparser.analyse.antlr.JavaParser; import complexityparser.listener.CallGraphBuilder; import complexityparser.listener.TOSBuilder; import complexityparser.listener.TypingListener; -import complexityparser.types.env.Operators; +import complexityparser.types.env.TypingEnv; import complexityparser.types.Tier; import complexityparser.tierTypingVisitors.FinalPass; import complexityparser.tierTypingVisitors.FirstPass; @@ -99,7 +99,7 @@ public class Model extends Observable { * @param code - a string of code. */ public void setCode(String code) { - Operators.getInstance().clear(); + TypingEnv.getInstance().clear(); this.code = code; CharStream input = CharStreams.fromString(code); lexer = new JavaLexer(input); @@ -154,7 +154,7 @@ public class Model extends Observable { //usually a good idea for debugging and testing //but showing bot might create a difficult to read output - System.out.println(Operators.getInstance()); + System.out.println(TypingEnv.getInstance()); //System.out.println(TOS.getInstance()); //calls update on the Observer objects update(); diff --git a/src/main/java/complexityparser/tierTypingVisitors/FinalPass.java b/src/main/java/complexityparser/tierTypingVisitors/FinalPass.java index 2335842..0632407 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/FinalPass.java +++ b/src/main/java/complexityparser/tierTypingVisitors/FinalPass.java @@ -83,7 +83,7 @@ public class FinalPass extends ObjectVisitor { if(ctx.formalParameters().formalParameterList() != null) { nbParam = ctx.formalParameters().formalParameterList().formalParameter().size(); } - Operator op = operators.get(namespace); + Operator op = te.get(namespace); if(op.size() == 0) { putTierType(ctx, Tier.None, Tier.None); } diff --git a/src/main/java/complexityparser/tierTypingVisitors/FirstPass.java b/src/main/java/complexityparser/tierTypingVisitors/FirstPass.java index 8ceadcd..a072180 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/FirstPass.java +++ b/src/main/java/complexityparser/tierTypingVisitors/FirstPass.java @@ -124,7 +124,7 @@ public class FirstPass extends ObjectVisitor { } paramTiers.increment(); } - operators.add(namespace, op); + te.add(namespace, op); setOverrideResult(true); return res; } diff --git a/src/main/java/complexityparser/tierTypingVisitors/SecondPass.java b/src/main/java/complexityparser/tierTypingVisitors/SecondPass.java index 111ca14..22f3b32 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/SecondPass.java +++ b/src/main/java/complexityparser/tierTypingVisitors/SecondPass.java @@ -68,7 +68,7 @@ public class SecondPass extends ObjectVisitor { if(ctx.formalParameters().formalParameterList() != null) { nbParam = ctx.formalParameters().formalParameterList().formalParameter().size(); } - Operator op = operators.get(namespace); + Operator op = te.get(namespace); setOverrideResult(false); int noBloc = getBlockNumber(ctx.methodBody().block()); int i = 0; diff --git a/src/main/java/complexityparser/tierTypingVisitors/base/BaseExpressionVisitor.java b/src/main/java/complexityparser/tierTypingVisitors/base/BaseExpressionVisitor.java index b315c94..b651cae 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/base/BaseExpressionVisitor.java +++ b/src/main/java/complexityparser/tierTypingVisitors/base/BaseExpressionVisitor.java @@ -160,7 +160,7 @@ public abstract class BaseExpressionVisitor extends BaseVisitor { in[i] = getTierType(list.get(i)); env = Tier.max(env, getEnvironmentType(list.get(i))); } - res = operators.findRes(op, in).getOut(); + res = te.findRes(op, in).getOut(); putTierType(ctx, res, env); return res; } @@ -231,12 +231,12 @@ public abstract class BaseExpressionVisitor extends BaseVisitor { Tier env = getEnvironmentType(ctx.expression()); String op = ctx.prefix.getText(); String type = getType(ctx.expression()); - Output out = operators.findRes(op, res); + Output out = te.findRes(op, res); if(out == null || out.getOut() == Tier.None) { if(type.equals("int") || type.equals("boolean")) { Mask m = new Mask(1); m.set(0, true); - out = operators.findCompatibleIn(op, m, res); + out = te.findCompatibleIn(op, m, res); } } if(out != null) { diff --git a/src/main/java/complexityparser/tierTypingVisitors/base/BaseVisitor.java b/src/main/java/complexityparser/tierTypingVisitors/base/BaseVisitor.java index c7b156c..1eaa099 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/base/BaseVisitor.java +++ b/src/main/java/complexityparser/tierTypingVisitors/base/BaseVisitor.java @@ -17,7 +17,7 @@ limitations under the License. package complexityparser.tierTypingVisitors.base; import complexityparser.types.Tier; -import complexityparser.types.env.Operators; +import complexityparser.types.env.TypingEnv; import complexityparser.analyse.antlr.JavaParser; import complexityparser.analyse.antlr.JavaParserBaseVisitor; import complexityparser.listener.TOSBuilder; @@ -47,7 +47,7 @@ public abstract class BaseVisitor extends JavaParserBaseVisitor { private int whileCount; //The number of while statements encountered in the current block. private ParseTreeProperty<Integer> blockNumbers; //The block index associated to the each node of the parse tree. protected TOS tos; //The table of symbols. - protected Operators operators; //The hashmap of operators (HashMap<String, Operator>). + protected TypingEnv te; //The typing environment (HashMap<String, Operator>). private CommonTokenStream commonTokenStream; //ANTLR token stream to show line numbers. private boolean overrideResult = true; //A flag to set if the final result should be overridden and if a string output should be generated. private boolean inInitBlock; //A flag to indicate if the visitor is currently located inside an init block or not. @@ -61,7 +61,7 @@ public abstract class BaseVisitor extends JavaParserBaseVisitor { this.types = typingListener.getTypes(); commonTokenStream = stream; tos = TOS.getInstance(); - operators = Operators.getInstance(); + te = TypingEnv.getInstance(); currentNamespace = tos.getNameSpace(0); recursiveCallsCount = 0; recursiveCallsReceivers = new HashSet<>(); diff --git a/src/main/java/complexityparser/tierTypingVisitors/base/ObjectVisitor.java b/src/main/java/complexityparser/tierTypingVisitors/base/ObjectVisitor.java index df553f8..9e0607f 100644 --- a/src/main/java/complexityparser/tierTypingVisitors/base/ObjectVisitor.java +++ b/src/main/java/complexityparser/tierTypingVisitors/base/ObjectVisitor.java @@ -246,9 +246,9 @@ public abstract class ObjectVisitor extends BaseBlockStatementVisitor { } //Finds the namespace in the operator table //and returns a compatible output with the input found in the parameters and the receiver type. - Output output = operators.findMethod(namespace, paramTiers.getArray()); + Output output = te.findMethod(namespace, paramTiers.getArray()); if(output == null || output.getOut() == Tier.None) { - output = operators.findCompatibleMethod(namespace, mask, paramTiers.getArray()); + output = te.findCompatibleMethod(namespace, mask, paramTiers.getArray()); if(output == null) { res = Tier.None; } diff --git a/src/main/java/complexityparser/types/Operator.java b/src/main/java/complexityparser/types/Operator.java index ee5f90c..36dc7b6 100644 --- a/src/main/java/complexityparser/types/Operator.java +++ b/src/main/java/complexityparser/types/Operator.java @@ -21,7 +21,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import complexityparser.types.env.Operators; +import complexityparser.types.env.TypingEnv; /** diff --git a/src/main/java/complexityparser/types/env/OperatorTypingEnvBuilder.java b/src/main/java/complexityparser/types/env/OperatorTypingEnvBuilder.java index 8fde03e..4ca8906 100644 --- a/src/main/java/complexityparser/types/env/OperatorTypingEnvBuilder.java +++ b/src/main/java/complexityparser/types/env/OperatorTypingEnvBuilder.java @@ -28,11 +28,11 @@ import complexityparser.types.Output; */ public class OperatorTypingEnvBuilder extends OperatorsBaseListener { - private Operators op = new Operators(); + private TypingEnv te = new TypingEnv(); private Operator latest; - public Operators getOp() { - return op; + public TypingEnv getOp() { + return te; } /** @@ -42,14 +42,14 @@ public class OperatorTypingEnvBuilder extends OperatorsBaseListener { */ @Override public void enterOperator(OperatorsParser.OperatorContext ctx) { - if(op == null) { + if(te == null) { return; } super.enterOperator(ctx); latest = new Operator(true); String opString = ctx.STRING_LITERAL().getText(); opString = opString.substring(1, opString.length() - 1); - op.add(opString, latest); + te.add(opString, latest); } /** @@ -58,7 +58,7 @@ public class OperatorTypingEnvBuilder extends OperatorsBaseListener { */ @Override public void enterUnit(OperatorsParser.UnitContext ctx) { - if(op == null) { + if(te == null) { return; } super.enterUnit(ctx); @@ -72,7 +72,7 @@ public class OperatorTypingEnvBuilder extends OperatorsBaseListener { latest.add(new Output(out, Tier.T0), in); } catch (IOException e) { e.printStackTrace(); - op = null; + te = null; } } } \ No newline at end of file diff --git a/src/main/java/complexityparser/types/env/Operators.java b/src/main/java/complexityparser/types/env/TypingEnv.java similarity index 96% rename from src/main/java/complexityparser/types/env/Operators.java rename to src/main/java/complexityparser/types/env/TypingEnv.java index bba4508..93018fb 100644 --- a/src/main/java/complexityparser/types/env/Operators.java +++ b/src/main/java/complexityparser/types/env/TypingEnv.java @@ -35,13 +35,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** -* This class contains information about the used operators and their (admissible) input/output tiers. +* This class encodes typing environements, information about the operations and their (admissible) types. */ -public class Operators { - private static Operators instance = null; +public class TypingEnv { + private static TypingEnv instance = null; private HashMap<String, Operator> operators; - protected Operators() { + protected TypingEnv() { operators = new HashMap<>(); } @@ -76,12 +76,12 @@ public class Operators { * * @return the attribute instance (null if the method #loadInstanceFromFIle() has not been called yet). */ - public static Operators getInstance() { + public static TypingEnv getInstance() { return instance; } /** - * Adds an operator and a name to the hashmap #operators. + * Adds an operator and a name to the hashmap operators. * @param k - a name * @param o - an operator */ @@ -226,8 +226,8 @@ public class Operators { * @param fileName - a file name. * @return the singleton instance of Operators. */ - private static Operators loadFromFile(String fileName) { - Operators res = null; + private static TypingEnv loadFromFile(String fileName) { + TypingEnv res = null; byte[] input = null; try { Path p = new File(fileName).toPath(); -- GitLab