Commit e8a0203f authored by Matthew Dawson's avatar Matthew Dawson
Browse files

Initial variable declaration support,

Add support to actually declare variables.  Currently only the real and
booleans are supported.
parent 3be53b3a
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@
 */
package ca.mcscert.jtet.expression;

import java.util.Map;

/**
 * @author Matthew Dawson <matthew@mjdsystems.ca>
 */
@@ -87,9 +89,30 @@ public class SALGenerator implements CheckerGenerator {
        return "(" + GetUnaryOperationSymbolFor(op) + " " + expression + ")";
    }

    public String GenerateVariableType(VariableType type) {
        if (type instanceof RealVariableType) {
            return "REAL";
        } else if (type instanceof BooleanVariableType) {
            return "BOOLEAN";
        } else {
            throw new IllegalArgumentException("The SAL Generator doesn't currently handle this variable type (Class: " + type.getClass().getName() + ")");
        }
    }

    @Override
    public String GenerateVariablesDeclaration(VariableCollection variableCollection) {
        throw new UnsupportedOperationException();
        Map<String, Variable> vars = variableCollection.getVariables();
        StringBuilder ret = new StringBuilder();

        // Generate all the variables.
        for(Variable var : vars.values()) {
            ret.append(var.outputName())
                    .append(":")
                    .append(GenerateVariableType(var.type()))
                    .append("\n");
        }

        return ret.toString();
    }

    @Override
+11 −0
Original line number Diff line number Diff line
@@ -111,6 +111,17 @@ public class GenericVariableDeclarationGeneratorTest {
                        null,
                        null,
                        null
                },
                {new SALGenerator(),
                        "x:REAL\n",
                        "new_x_name:REAL\n",
                        null,
                        "x:BOOLEAN\n",
                        null,
                        null,
                        null,
                        null,
                        null
                }
        });
    }