Support for parentheses in binary expressions

This commit is contained in:
nub31
2025-01-27 16:53:08 +01:00
parent 5bef35861d
commit 39515e4e32
2 changed files with 13 additions and 7 deletions

View File

@@ -1,4 +1,3 @@
func main() {
let x = "test" == "test";
syscall(60, x);
syscall(60, 5 + 3 * 5);
}

View File

@@ -237,12 +237,19 @@ public class Parser
private ExpressionNode ParsePrimaryExpression()
{
var token = ExpectToken();
return token switch
switch (token)
{
LiteralToken literal => new LiteralNode(literal.Value, literal.Type),
IdentifierToken identifier => ParseExpressionIdentifier(identifier),
_ => throw new Exception($"Unexpected token type {token.GetType().Name}")
};
case LiteralToken literal:
return new LiteralNode(literal.Value, literal.Type);
case IdentifierToken identifier:
return ParseExpressionIdentifier(identifier);
case SymbolToken { Symbol: Symbol.OpenParen }:
var expression = ParseExpression();
ExpectSymbol(Symbol.CloseParen);
return expression;
default:
throw new Exception($"Unexpected token type {token.GetType().Name}");
}
}
private ExpressionNode ParseExpressionIdentifier(IdentifierToken identifier)