Equality and comparison

This commit is contained in:
Rafał Grodziński
2025-06-04 17:24:30 +09:00
parent 36e798ae3f
commit 4feeb0f8af
7 changed files with 118 additions and 10 deletions

View File

@@ -21,6 +21,24 @@ string Expression::toString() {
ExpressionBinary::ExpressionBinary(shared_ptr<Token> token, shared_ptr<Expression> left, shared_ptr<Expression> right):
Expression(Expression::Kind::BINARY), left(left), right(right) {
switch (token->getKind()) {
case Token::Kind::EQUAL:
operation = EQUAL;
break;
case Token::Kind::NOT_EQUAL:
operation = NOT_EQUAL;
break;
case Token::Kind::LESS:
operation = LESS;
break;
case Token::Kind::LESS_EQUAL:
operation = LESS_EQUAL;
break;
case Token::Kind::GREATER:
operation = GREATER;
break;
case Token::Kind::GREATER_EQUAL:
operation = GREATER_EQUAL;
break;
case Token::Kind::PLUS:
operation = ADD;
break;
@@ -55,16 +73,28 @@ shared_ptr<Expression> ExpressionBinary::getRight() {
string ExpressionBinary::toString() {
switch (operation) {
case EQUAL:
return "{= " + left->toString() + " " + right->toString() + "}";
case NOT_EQUAL:
return "{!= " + left->toString() + " " + right->toString() + "}";
case LESS:
return "{< " + left->toString() + " " + right->toString() + "}";
case LESS_EQUAL:
return "{<= " + left->toString() + " " + right->toString() + "}";
case GREATER:
return "{> " + left->toString() + " " + right->toString() + "}";
case GREATER_EQUAL:
return "{<= " + left->toString() + " " + right->toString() + "}";
case ADD:
return "<+ " + left->toString() + " " + right->toString() + ">";
return "{+ " + left->toString() + " " + right->toString() + "}";
case SUB:
return "<- " + left->toString() + " " + right->toString() + ">";
return "{- " + left->toString() + " " + right->toString() + "}";
case MUL:
return "<* " + left->toString() + " " + right->toString() + ">";
return "{* " + left->toString() + " " + right->toString() + "}";
case DIV:
return "</ " + left->toString() + " " + right->toString() + ">";
return "{/ " + left->toString() + " " + right->toString() + "}";
case MOD:
return "<% " + left->toString() + " " + right->toString() + ">";
return "{% " + left->toString() + " " + right->toString() + "}";
}
}