package de.skuzzle.polly.core.parser.ast.lang.functions; import de.skuzzle.polly.core.parser.Position; import de.skuzzle.polly.core.parser.ast.declarations.Namespace; import de.skuzzle.polly.core.parser.ast.declarations.types.Type; import de.skuzzle.polly.core.parser.ast.declarations.types.TypeVar; import de.skuzzle.polly.core.parser.ast.expressions.literals.Literal; import de.skuzzle.polly.core.parser.ast.expressions.literals.NumberLiteral; import de.skuzzle.polly.core.parser.ast.lang.BinaryOperator; import de.skuzzle.polly.core.parser.ast.visitor.ASTTraversalException; import de.skuzzle.polly.core.parser.ast.visitor.ExecutionVisitor; import de.skuzzle.polly.tools.collections.Stack; public class Comp extends BinaryOperator<Literal, Literal> { public Comp() { super(OpType.COMP); final TypeVar tv = Type.newTypeVar("A"); this.initTypes(Type.NUM, tv, tv); } @Override protected void exec(Stack<Literal> stack, Namespace ns, Literal left, Literal right, Position resultPos, ExecutionVisitor execVisitor) throws ASTTraversalException { stack.push(new NumberLiteral(resultPos, left.compareTo(right))); } }