Fixed values handling

This commit is contained in:
Rafał Grodziński
2025-08-01 12:22:02 +09:00
parent 7dfa6bcffe
commit d3f45e7298
5 changed files with 16 additions and 12 deletions

View File

@@ -1,9 +1,9 @@
@extern putchar fun: character sint32 -> sint32 @extern putchar fun: character u32 -> u32
main fun -> sint32 main fun -> u32
text data<sint32> <- "Hello, world!\n" text data<u32> <- "Hello, world!\n"
rep i sint32 <- 0, text[i] != 0: rep i u32 <- 0, text[i] != 0:
putchar(text[i]) putchar(text[i])
i <- i + 1 i <- i + 1
; ;

View File

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

View File

@@ -44,10 +44,11 @@ shared_ptr<ExpressionLiteral> ExpressionLiteral::expressionLiteralForToken(share
expression->u32Value = *charValue; expression->u32Value = *charValue;
return expression; return expression;
} }
case TokenKind::REAL: case TokenKind::REAL: {
expression->r32Value = stof(token->getLexme()); expression->r32Value = stof(token->getLexme());
expression->valueType = ValueType::valueTypeForToken(token, nullptr, 0); expression->valueType = ValueType::valueTypeForToken(token, nullptr, 0);
break; break;
}
default: default:
return nullptr; return nullptr;
} }
@@ -63,15 +64,15 @@ bool ExpressionLiteral::getBoolValue() {
} }
uint8_t ExpressionLiteral::getU8Value() { uint8_t ExpressionLiteral::getU8Value() {
return s32Value; return u8Value;
} }
uint32_t ExpressionLiteral::getU32Value() { uint32_t ExpressionLiteral::getU32Value() {
return s32Value; return u32Value;
} }
int8_t ExpressionLiteral::getS8Value() { int8_t ExpressionLiteral::getS8Value() {
return s32Value; return s8Value;
} }
int32_t ExpressionLiteral::getS32Value() { int32_t ExpressionLiteral::getS32Value() {

View File

@@ -37,6 +37,7 @@ shared_ptr<ValueType> ValueType::valueTypeForToken(shared_ptr<Token> token, shar
case TokenKind::BOOL: case TokenKind::BOOL:
return make_shared<ValueType>(ValueTypeKind::BOOL, nullptr, 0); return make_shared<ValueType>(ValueTypeKind::BOOL, nullptr, 0);
case TokenKind::INTEGER_DEC: case TokenKind::INTEGER_DEC:
return make_shared<ValueType>(ValueTypeKind::S32, nullptr, 0);
case TokenKind::INTEGER_HEX: case TokenKind::INTEGER_HEX:
case TokenKind::INTEGER_BIN: case TokenKind::INTEGER_BIN:
case TokenKind::INTEGER_CHAR: case TokenKind::INTEGER_CHAR: