{
+ /**
+ * @param type
+ * @param e
+ * @param signature
+ * @throws NotWelldefinedException
+ */
+ public static final void checkType(Type type, Expression e, Signature signature) throws NotWelldefinedException {
+ Type got = e.getType(signature);
+ if (!type.equals(got)) {
+ throw new NotWelldefinedException("Typemismatch in expected " + type + ", got" + got, e);
+ }
+ }
+
+ /**
+ * @return returns true if a child expression contains a match expression
+ */
+ public abstract boolean hasMatchExpression();
+
/**
* Returns the precedence of the operator expression.
*
@@ -54,17 +72,4 @@ public abstract class Expression extends ASTNode
*/
public abstract Type getType(Signature signature)
throws NotWelldefinedException;
-
- /**
- * @param type
- * @param e
- * @param signature
- * @throws NotWelldefinedException
- */
- public static final void checkType(Type type, Expression e, Signature signature) throws NotWelldefinedException {
- Type got = e.getType(signature);
- if (!type.equals(got)) {
- throw new NotWelldefinedException("Typemismatch in expected " + type + ", got" + got, e);
- }
- }
}
diff --git a/src/main/java/edu/kit/formal/proofscriptparser/ast/IntegerLiteral.java b/src/main/java/edu/kit/formal/proofscriptparser/ast/IntegerLiteral.java
index 313ce630815117b2afa1059bc683e9cc5d3d48d5..1edb994f4fcc68402c6021096f74e4eba0abc920 100644
--- a/src/main/java/edu/kit/formal/proofscriptparser/ast/IntegerLiteral.java
+++ b/src/main/java/edu/kit/formal/proofscriptparser/ast/IntegerLiteral.java
@@ -59,6 +59,11 @@ public class IntegerLiteral extends Literal {
return visitor.visit(this);
}
+ @Override
+ public boolean hasMatchExpression() {
+ return false;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/src/main/java/edu/kit/formal/proofscriptparser/ast/MatchExpression.java b/src/main/java/edu/kit/formal/proofscriptparser/ast/MatchExpression.java
index a0bd68847bcf62adb139cd644a61680680357b42..1a0e6b31fb99563f2158749e79559d91eae235f1 100644
--- a/src/main/java/edu/kit/formal/proofscriptparser/ast/MatchExpression.java
+++ b/src/main/java/edu/kit/formal/proofscriptparser/ast/MatchExpression.java
@@ -76,6 +76,11 @@ public class MatchExpression extends Expression {
return operator.returnType();
}
+ @Override
+ public boolean hasMatchExpression() {
+ return expression.hasMatchExpression();
+ }
+
/**
* {@inheritDoc
*/
diff --git a/src/main/java/edu/kit/formal/proofscriptparser/ast/Variable.java b/src/main/java/edu/kit/formal/proofscriptparser/ast/Variable.java
index 3acdf31085ddbc0dfb46406ac3ffb043d3871543..981af8d8650e9b4c2814e6f1625661f5abf57b07 100644
--- a/src/main/java/edu/kit/formal/proofscriptparser/ast/Variable.java
+++ b/src/main/java/edu/kit/formal/proofscriptparser/ast/Variable.java
@@ -52,6 +52,11 @@ public class Variable extends Literal {
return visitor.visit(this);
}
+ @Override
+ public boolean hasMatchExpression() {
+ return false;
+ }
+
@Override
public Variable copy() {
Variable v = new Variable(identifier);