folding for booleans now works
This commit is contained in:
parent
69a24132d3
commit
b6f5eaa3c8
@ -592,6 +592,41 @@ public class ConstantFolder implements ActualParameterVisitor<Void, AbstractSynt
|
|||||||
|
|
||||||
if (o.decl == StdEnvironment.addDecl) {
|
if (o.decl == StdEnvironment.addDecl) {
|
||||||
foldedValue = int1 + int2;
|
foldedValue = int1 + int2;
|
||||||
|
} else if (o.decl == StdEnvironment.greaterDecl) {
|
||||||
|
foldedValue = int1 > int2;
|
||||||
|
} else if (o.decl == StdEnvironment.equalDecl) {
|
||||||
|
foldedValue = int1 == int2;
|
||||||
|
} else if (o.decl == StdEnvironment.lessDecl) {
|
||||||
|
foldedValue = int1 < int2;
|
||||||
|
} else if (o.decl == StdEnvironment.notgreaterDecl) {
|
||||||
|
foldedValue = int1 <= int2;
|
||||||
|
} else if (o.decl == StdEnvironment.notlessDecl) {
|
||||||
|
foldedValue = int1 >= int2;
|
||||||
|
} else if (o.decl == StdEnvironment.unequalDecl) {
|
||||||
|
foldedValue = int1 /= int2;
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foldedValue.toString() == "true" || foldedValue.toString() == "false") {
|
||||||
|
Identifier ti = new Identifier(foldedValue.toString(), node1.getPosition());
|
||||||
|
|
||||||
|
if (ti.spelling == "true") {
|
||||||
|
System.out.println("True Decl thingy");
|
||||||
|
ti.decl = StdEnvironment.trueDecl;
|
||||||
|
SimpleVname sti = new SimpleVname(ti, node1.getPosition());
|
||||||
|
VnameExpression esti = new VnameExpression(sti, node1.getPosition());
|
||||||
|
esti.type = StdEnvironment.booleanType;
|
||||||
|
return esti;
|
||||||
|
|
||||||
|
} else if (ti.spelling == "false") {
|
||||||
|
System.out.println("False Decl thingy");
|
||||||
|
ti.decl = StdEnvironment.falseDecl;
|
||||||
|
SimpleVname sti = new SimpleVname(ti, node1.getPosition());
|
||||||
|
VnameExpression esti = new VnameExpression(sti, node1.getPosition());
|
||||||
|
esti.type = StdEnvironment.booleanType;
|
||||||
|
return esti;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (foldedValue instanceof Integer) {
|
if (foldedValue instanceof Integer) {
|
||||||
@ -599,16 +634,9 @@ public class ConstantFolder implements ActualParameterVisitor<Void, AbstractSynt
|
|||||||
IntegerExpression ie = new IntegerExpression(il, node1.getPosition());
|
IntegerExpression ie = new IntegerExpression(il, node1.getPosition());
|
||||||
ie.type = StdEnvironment.integerType;
|
ie.type = StdEnvironment.integerType;
|
||||||
return ie;
|
return ie;
|
||||||
} else if (foldedValue instanceof Boolean) {
|
|
||||||
//Task 7?
|
|
||||||
System.out.println("Boolean Expr. ");
|
|
||||||
/* currently not handled! */
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
//?
|
|
||||||
}
|
|
||||||
|
|
||||||
// any unhandled situation (i.e., not foldable) is ignored
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
booleanfold.tam
BIN
booleanfold.tam
Binary file not shown.
BIN
booleannotfold.tam
Normal file
BIN
booleannotfold.tam
Normal file
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user