Implements indexing, currently can only be used with strings
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user