Added expression unary

This commit is contained in:
Rafał Grodziński
2025-07-31 22:04:30 +09:00
parent 2e79188cd3
commit c75052e35f
5 changed files with 60 additions and 5 deletions

View File

@@ -50,10 +50,10 @@ i u32 <- 0, rep text[i] != 0:
main fun -> u32
num1 u8 <- 42
num2 s8 <- 15
num2 s8 <- -15
num3 u32 <- 1234123
num4 s32 <- 345345
num5 r32 <- 42.58
num4 s32 <- -345345
num5 r32 <- -42.58
ret 0
;

View File

@@ -12,6 +12,7 @@ enum class ExpressionKind {
LITERAL,
ARRAY_LITERAL,
GROUPING,
UNARY,
BINARY,
IF_ELSE,
VAR,

View File

@@ -1,4 +1,7 @@
#include "Parser/Expression/Expression.h"
#ifndef EXPRESSION_BINARY_H
#define EXPRESSION_BINARY_H
#include "Expression.h"
enum class ExpressionBinaryOperation {
EQUAL,
@@ -26,4 +29,6 @@ public:
ExpressionBinaryOperation getOperation();
shared_ptr<Expression> getLeft();
shared_ptr<Expression> getRight();
};
};
#endif

View File

@@ -0,0 +1,26 @@
#include "ExpressionUnary.h"
#include "Lexer/Token.h"
ExpressionUnary::ExpressionUnary(shared_ptr<Token> token, shared_ptr<Expression> expression):
Expression(ExpressionKind::UNARY, nullptr), expression(expression) {
switch (token->getKind()) {
case TokenKind::PLUS:
operation = ExpressionUnaryOperation::PLUS;
break;
case TokenKind::MINUS:
operation = ExpressionUnaryOperation::MINUS;
break;
default:
operation = ExpressionUnaryOperation::INVALID;
break;
}
}
ExpressionUnaryOperation ExpressionUnary::getOperation() {
return operation;
}
shared_ptr<Expression> ExpressionUnary::getExpression() {
return expression;
}

View File

@@ -0,0 +1,23 @@
#ifndef EXPRESSION_UNARY_H
#define EXPRESSION_UNARY_H
#include "Expression.h"
enum class ExpressionUnaryOperation {
PLUS,
MINUS,
INVALID
};
class ExpressionUnary: public Expression {
private:
ExpressionUnaryOperation operation;
shared_ptr<Expression> expression;
public:
ExpressionUnary(shared_ptr<Token> token, shared_ptr<Expression> expression);
ExpressionUnaryOperation getOperation();
shared_ptr<Expression> getExpression();
};
#endif