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

Make VariableParser use an instance to allow for state information.

VariableParser now needs to store information about custom types (specifically
enumerations).  Thus make parseVariable take an instance now by making it
a method of VariableParser again.  Also change the TET to use a global
singleton (called TET) to store the TET's VariableParser (since the type
information is global to Matlab).

git-svn-id: https://groke.mcmaster.ca/svn/grad/colin/branches/TableTool_javization@11082 57e6efec-57d4-0310-aeb1-a6c144bb1a8b
parent 1df9d6b9
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -30,10 +30,7 @@ import org.antlr.v4.runtime.tree.TerminalNode;
 * @author Matthew Dawson
 */
final public class VariableParser {
    private VariableParser(String vars) {
    }
    
    public static Map<String, Variable> parseVariables(String variables) {
    public Map<String, Variable> parseVariables(String variables) {
        // create a CharStream that reads from standard input
        ANTLRInputStream input = new ANTLRInputStream(variables) {

+5 −3
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public class HierarchicalGridCVC3GeneratorTest {

        nextGrid.get(1).getSubHiearchy().add(new HierarchicalCell("z == 0"));

        String out = HierarchcialGridCheckerWalkerGenerator.GenerateCheckerFromGrid(grid, new HierarchicalGridCVC3Generator(VariableParser.parseVariables("x,z"), 1));
        String out = HierarchcialGridCheckerWalkerGenerator.GenerateCheckerFromGrid(grid, new HierarchicalGridCVC3Generator(variableParser.parseVariables("x,z"), 1));

        String expected = "ECHO \"begin1\";\n"+
"PUSH;\n"+
@@ -88,4 +88,6 @@ public class HierarchicalGridCVC3GeneratorTest {
"ECHO \"end6\";\n";
        assertEquals(expected, out);
    }

    VariableParser variableParser = new VariableParser();
}
+5 −3
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ public class GenericGeneratorTest {
    @Test
    public void RealTest() {
        if (RealExpectedOutput != null) {
            Map<String, Variable> vars = VariableParser.parseVariables("x");
            Map<String, Variable> vars = variableParser.parseVariables("x");
            Expression expr = PVSSimpleParser.parsePVSCode(vars, query);
            assertEquals(RealExpectedOutput, expr.getCheckerOutput(generator, outputType));
        }
@@ -77,7 +77,7 @@ public class GenericGeneratorTest {
    @Test
    public void SignedFixedPointTest() {
        if (SignedFixedPointExpectedOutput != null) {
            Map<String, Variable> vars = VariableParser.parseVariables("x:fixedt(1, 8, 2)");
            Map<String, Variable> vars = variableParser.parseVariables("x:fixedt(1, 8, 2)");
            Expression expr = PVSSimpleParser.parsePVSCode(vars, query);
            assertEquals(SignedFixedPointExpectedOutput, expr.getCheckerOutput(generator, outputType));
        }
@@ -86,9 +86,11 @@ public class GenericGeneratorTest {
    @Test
    public void UnsignedFixedPointTest() {
        if (UnsignedFixedPointExpectedOutput != null) {
            Map<String, Variable> vars = VariableParser.parseVariables("x:fixedt(0, 8, 2)");
            Map<String, Variable> vars = variableParser.parseVariables("x:fixedt(0, 8, 2)");
            Expression expr = PVSSimpleParser.parsePVSCode(vars, query);
            assertEquals(UnsignedFixedPointExpectedOutput, expr.getCheckerOutput(generator, outputType));
        }
    }

    VariableParser variableParser = new VariableParser();
}
+13 −11
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ public class MatlabParserTest {

    @Test
    public void testSimpleRealVariableParse() {
        Expression expr = MatlabParser.parseMatlabCode(VariableParser.parseVariables("a"), "a\n");
        Expression expr = MatlabParser.parseMatlabCode(variableParser.parseVariables("a"), "a\n");

        assertSame(Variable.class, expr.getClass());
        CheckerGenerator generator = new CVC3Generator();
@@ -145,7 +145,7 @@ public class MatlabParserTest {

    @Test
    public void testInsanseExpressionsWithLiteralsAndVariables() {
        Expression expr = MatlabParser.parseMatlabCode(VariableParser.parseVariables("x,z,y"), "z == 1 && x == 0 && y == 2");
        Expression expr = MatlabParser.parseMatlabCode(variableParser.parseVariables("x,z,y"), "z == 1 && x == 0 && y == 2");

        VariableType variableType = new BooleanVariableType();
        assertEquals(variableType, expr.actualOutputTypeForRequestedOutput(variableType));
@@ -154,4 +154,6 @@ public class MatlabParserTest {
        generator = new SMTLIBGenerator();
        assertEquals("(and (and (= z 1.0) (= x 0.0)) (= y 2.0))", expr.getCheckerOutput(generator, variableType));
    }

    VariableParser variableParser = new VariableParser();
}
+4 −2
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ public class PVSSimpleParserTest {

    @Test
    public void testSimpleRealVariableParse() {
        Expression expr = PVSSimpleParser.parsePVSCode(VariableParser.parseVariables("a"), "a\n");
        Expression expr = PVSSimpleParser.parsePVSCode(variableParser.parseVariables("a"), "a\n");

        assertSame(Variable.class, expr.getClass());
        CheckerGenerator generator = new CVC3Generator();
@@ -147,7 +147,7 @@ public class PVSSimpleParserTest {

    @Test
    public void testInsanseExpressionsWithLiteralsAndVariables() {
        Expression expr = PVSSimpleParser.parsePVSCode(VariableParser.parseVariables("x,z,y"), "z = 1 AND x = 0 AND y = 2");
        Expression expr = PVSSimpleParser.parsePVSCode(variableParser.parseVariables("x,z,y"), "z = 1 AND x = 0 AND y = 2");

        VariableType variableType = new BooleanVariableType();
        assertEquals(variableType, expr.actualOutputTypeForRequestedOutput(variableType));
@@ -156,4 +156,6 @@ public class PVSSimpleParserTest {
        generator = new SMTLIBGenerator();
        assertEquals("(and (= z 1.0) (and (= x 0.0) (= y 2.0)))", expr.getCheckerOutput(generator, variableType));
    }

    VariableParser variableParser = new VariableParser();
}
Loading