Fixes issue where functions inside binary operators wouldnt work
This commit is contained in:
@@ -268,17 +268,24 @@ namespace Upsilon.Parser
|
||||
{
|
||||
expression = ParseBinaryExpression();
|
||||
}
|
||||
|
||||
HandleComplexExpression(expression);
|
||||
return expression;
|
||||
}
|
||||
|
||||
private ExpressionSyntax HandleComplexExpression(ExpressionSyntax baseExpression)
|
||||
{
|
||||
while (Current.Kind == SyntaxKind.OpenBracket || Current.Kind == SyntaxKind.OpenParenthesis ||
|
||||
Current.Kind == SyntaxKind.FullStop)
|
||||
{
|
||||
if (Current.Kind == SyntaxKind.OpenBracket)
|
||||
expression = ParseIndexExpression(expression);
|
||||
baseExpression = ParseIndexExpression(baseExpression);
|
||||
else if (Current.Kind == SyntaxKind.OpenParenthesis)
|
||||
expression = ParseFunctionCallExpression(expression);
|
||||
baseExpression = ParseFunctionCallExpression(baseExpression);
|
||||
else if (Current.Kind == SyntaxKind.FullStop)
|
||||
expression = ParseFullStopIndexExpression(expression);
|
||||
baseExpression = ParseFullStopIndexExpression(baseExpression);
|
||||
}
|
||||
return expression;
|
||||
return baseExpression;
|
||||
}
|
||||
|
||||
private StatementSyntax ParseAssignmentExpression()
|
||||
@@ -346,6 +353,7 @@ namespace Upsilon.Parser
|
||||
|
||||
var op = NextToken();
|
||||
var right = ParseBinaryExpression(precedence);
|
||||
right = HandleComplexExpression(right);
|
||||
left = new BinaryExpressionSyntax(left, op, right);
|
||||
}
|
||||
return left;
|
||||
|
||||
Reference in New Issue
Block a user