Fixed values handling
This commit is contained in:
@@ -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
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -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
|
||||||
;
|
;
|
||||||
@@ -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() {
|
||||||
|
|||||||
@@ -756,8 +756,8 @@ shared_ptr<Expression> Parser::matchPrimary() {
|
|||||||
return expression;
|
return expression;
|
||||||
|
|
||||||
expression = matchExpressionArrayLiteral();
|
expression = matchExpressionArrayLiteral();
|
||||||
if (expression != nullptr || errors.size() > errorsCount)
|
if (expression != nullptr || errors.size() > errorsCount)
|
||||||
return expression;
|
return expression;
|
||||||
|
|
||||||
expression = matchExpressionLiteral();
|
expression = matchExpressionLiteral();
|
||||||
if (expression != nullptr || errors.size() > errorsCount)
|
if (expression != nullptr || errors.size() > errorsCount)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user