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() { func main() {
let x = "test" == "test"; syscall(60, 5 + 3 * 5);
syscall(60, x);
} }

View File

@@ -237,12 +237,19 @@ public class Parser
private ExpressionNode ParsePrimaryExpression() private ExpressionNode ParsePrimaryExpression()
{ {
var token = ExpectToken(); var token = ExpectToken();
return token switch switch (token)
{ {
LiteralToken literal => new LiteralNode(literal.Value, literal.Type), case LiteralToken literal:
IdentifierToken identifier => ParseExpressionIdentifier(identifier), return new LiteralNode(literal.Value, literal.Type);
_ => throw new Exception($"Unexpected token type {token.GetType().Name}") 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) private ExpressionNode ParseExpressionIdentifier(IdentifierToken identifier)