Implements indexing, currently can only be used with strings

This commit is contained in:
2019-06-06 17:35:51 +02:00
parent b275e1fbd6
commit cb5d9e2f62
15 changed files with 140 additions and 9 deletions

View File

@@ -22,6 +22,7 @@ enum class ParsedExpressionKind{
Binary,
Parenthesized,
FunctionCall,
Indexer,
};
class ParsedExpression {
@@ -246,5 +247,28 @@ public:
}
};
class IndexExpression : public ParsedExpression{
std::unique_ptr<ParsedExpression> _indexerExpression;
std::unique_ptr<ParsedExpression> _indexExpression;
public:
IndexExpression(ParsedExpression* indexer, ParsedExpression* index, unsigned int start, unsigned int length)
:ParsedExpression(start, length){
_indexerExpression = std::unique_ptr<ParsedExpression>(indexer);
_indexExpression = std::unique_ptr<ParsedExpression>(index);
}
ParsedExpressionKind GetKind() final{
return ParsedExpressionKind::Indexer;
}
ParsedExpression* GetIndexer(){
return _indexerExpression.get();
}
ParsedExpression* GetIndex(){
return _indexExpression.get();
}
};
#endif //PORYGONLANG_PARSEDEXPRESSION_HPP