Added basics for lexing index expressions

This commit is contained in:
2019-06-05 21:01:59 +02:00
parent 7f79c4d8bb
commit b275e1fbd6
3 changed files with 21 additions and 3 deletions

View File

@@ -139,9 +139,17 @@ ParsedStatement *Parser::ParseFunctionDeclaration(IToken *current) {
ParsedExpression* Parser::ParseExpression(IToken* current){
auto expression = this -> ParseBinaryExpression(current, OperatorPrecedence::No);
while (this -> Peek() -> GetKind() == TokenKind::OpenParenthesis){
expression = this->ParseFunctionCallExpression(expression);
//TODO: Function Evaluation
auto peekKind = this->Peek()->GetKind();
while (peekKind == TokenKind::OpenParenthesis ||
peekKind == TokenKind::OpenSquareBracket ||
peekKind == TokenKind::PeriodToken){
if (peekKind == TokenKind::OpenParenthesis){
expression = this->ParseFunctionCallExpression(expression);
} else if (peekKind == TokenKind::OpenSquareBracket){
//TODO: index expression
} else {
//TODO: index period expression
}
}
return expression;
}