Commit 0d7bdaae authored by Matthew Dawson's avatar Matthew Dawson
Browse files

Make VariableParser into a static only class.

Instead of having new instances of VariableParser created, and thus wrapping
a Map<String, Variable> in a very inelegant way, simply have a single method
that actually does the VariableParser work, and directly returns the Map.
Also ensure all tests + Matlab continue to work, and tighten up some extra
imports and Matlab output in affected areas.

git-svn-id: https://groke.mcmaster.ca/svn/grad/colin/branches/TableTool_javization@10846 57e6efec-57d4-0310-aeb1-a6c144bb1a8b
parent 171008e5
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -16,9 +16,9 @@
 */
package ca.mcmaster.cas.tabularexpressiontoolbox.cvc3generator;

import ca.mcmaster.cas.tabularexpressiontoolbox.expression.Variable;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParser;
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.BooleanVariableType;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.VariableParser;
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.CVC3Generator;
import ca.mcmaster.cas.tabularexpressiontoolbox.tablularexpression.Cell;
import ca.mcmaster.cas.tabularexpressiontoolbox.tablularexpression.HierarchcialGridCheckerGenerator;
@@ -26,6 +26,8 @@ import java.util.ArrayList;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

/**
@@ -34,7 +36,7 @@ import org.apache.commons.lang3.StringUtils;
 */
final public class HierarchicalGridCVC3Generator implements HierarchcialGridCheckerGenerator {

    public HierarchicalGridCVC3Generator(VariableParser variableDefinitions, int queryCountStart) {
    public HierarchicalGridCVC3Generator(Map<String, Variable> variableDefinitions, int queryCountStart) {
        m_variableDefinitions = variableDefinitions;
        m_currentTCC = queryCountStart;
    }
@@ -155,7 +157,7 @@ final public class HierarchicalGridCVC3Generator implements HierarchcialGridChec
    List<String> m_queries = new ArrayList<String>();

    // To fix properly.
    VariableParser m_variableDefinitions;
    Map<String, Variable> m_variableDefinitions;
    static BooleanVariableType m_booleanType = new BooleanVariableType();
    CVC3Generator m_CVC3Generator = new CVC3Generator();
}
+11 −2
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ package ca.mcmaster.cas.tabularexpressiontoolbox.expression;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

/**
@@ -183,8 +185,15 @@ final public class CVC3Generator implements CheckerGenerator{
    }

    @Override
    public String GenerateVariableDecleration(Variable var) {
        return var.name() + ":" + GenerateVariableType(var.type()) + ";";
    public String GenerateVariablesDeclaration(Map<String, Variable> vars) {
        StringBuilder ret = new StringBuilder();
        for(Variable var : vars.values()) {
            ret.append(var.name())
               .append(":")
               .append(GenerateVariableType(var.type()))
               .append(";\n");
        }
        return ret.toString();
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@
 */
package ca.mcmaster.cas.tabularexpressiontoolbox.expression;

import java.util.Map;

/**
 *
 * @author matthew
@@ -12,5 +14,5 @@ public interface CheckerGenerator {
    public String GenerateUnaryOperation(MatlabUnaryOperation op, String expression, VariableType usedType);
    public String GenerateBinaryOperation(MatlabBinaryOperation op, String lhsExp, String rhsExp, VariableType usedType);
    public String GenerateLiterlaValue(String value, VariableType requestedType);
    public String GenerateVariableDecleration(Variable var);
    public String GenerateVariablesDeclaration(Map<String, Variable> vars);
}
+12 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
 */
package ca.mcmaster.cas.tabularexpressiontoolbox.expression;

import java.util.Map;

/**
 *
 * @author Matthew Dawson <matthew@mjdsystems.ca>
@@ -45,8 +47,16 @@ public class SMTLIBGenerator implements CheckerGenerator {
    }

    @Override
    public String GenerateVariableDecleration(Variable var) {
        return "(declare-fun " + var.name() + " () " + GenerateVariableType(var.type()) + ")";
    public String GenerateVariablesDeclaration(Map<String, Variable> vars) {
        StringBuilder ret = new StringBuilder();
        for (Variable var : vars.values()) {
            ret.append("(declare-fun ")
               .append(var.name())
               .append(" () ")
               .append(GenerateVariableType(var.type()))
               .append(")\n");
        }
        return ret.toString();
    }

    public static String GenerateVariableType(VariableType type) {
+5 −7
Original line number Diff line number Diff line
@@ -11,10 +11,7 @@ import ca.mcmaster.cas.tabularexpressiontoolbox.expression.MatlabExpressionUnary
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.MatlabExpressionValue;
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.MatlabExpressionWithSubExpression;
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.MatlabLiteral;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserBaseListener;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserLexer;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserListener;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser;
import ca.mcmaster.cas.tabularexpressiontoolbox.expression.Variable;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser.G1Context;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser.G2Context;
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser.G3Context;
@@ -36,6 +33,7 @@ import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser.Id_pl
import ca.mcmaster.cas.tabularexpressiontoolbox.parsers.MatlabParserParser.Prefix_operatorContext;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Map;

import ca.mcmaster.cas.tabularexpressiontoolbox.expression.MatlabUnaryOperation;
import org.antlr.v4.runtime.ANTLRInputStream;
@@ -49,7 +47,7 @@ import org.antlr.v4.runtime.tree.ParseTreeWalker;
 */
final public class MatlabParser implements MatlabExpressionWithSubExpression {

    public MatlabParser(VariableParser variableListing, String matlabCode) {
    public MatlabParser(Map<String, Variable> variableListing, String matlabCode) {
        m_variableParser = variableListing;
        m_opStack.addFirst(new ExpressionStackContainer(0, this));
        parseMatlabCode(matlabCode + "\n");
@@ -325,12 +323,12 @@ final public class MatlabParser implements MatlabExpressionWithSubExpression {

        @Override
        public void enterId_plus_indexers(Id_plus_indexersContext ctx) {
            addExpressionValue(m_variableParser.getVar(ctx.getText()));
            addExpressionValue(m_variableParser.get(ctx.getText()));
        }
    }
    private MatlabExpression m_rootExpression;
    private int m_level = 0;
    private VariableParser m_variableParser;
    private Map<String, Variable> m_variableParser;

    private static class ExpressionStackContainer {

Loading