Support for parentheses in binary expressions
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
func main() {
|
func main() {
|
||||||
let x = "test" == "test";
|
syscall(60, 5 + 3 * 5);
|
||||||
syscall(60, x);
|
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user