diff options
| Commit | 9b0c6501113169cacc6a6c4ca996959e4586e304 (patch) | |
|---|---|---|
| Author | 2018-09-21 09:21:29 +0300 | |
| Committer | 2018-09-21 09:23:15 +0300 | |
| Files | de1cad98fbe893a46be20dcb67cef0ea072262c4 /JSImpl/src/Expression.h | |
| IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.tar IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.tar.gz IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.zip | ||
| Parent | 7ee2c286210ed2ef684636ec031b722dc939c5ec (diff) | |
Implement TopStatement and Program rules.
1 files changed, 32 insertions, 3 deletions
| -rw-r--r-- | JSImpl/src/Expression.h | 35 |
diff --git a/JSImpl/src/Expression.h b/JSImpl/src/Expression.h index 51cdd21..03a2c54 100644 --- a/JSImpl/src/Expression.h +++ b/JSImpl/src/Expression.h @@ -73,12 +73,12 @@ private: class IdentifierExpression : public Expression { public: - IdentifierExpression(IPLString& name, ExpressionPtr value); + IdentifierExpression(IPLString& name); virtual ~IdentifierExpression() {} virtual void Print(std::ostream& os) const override; protected: IPLString m_Name; - ExpressionPtr m_Value; + }; class ListExpression : public Expression @@ -95,9 +95,11 @@ protected: class VariableDefinitionExpression : public IdentifierExpression { public: - VariableDefinitionExpression(IPLString& name, ExpressionPtr value) : IdentifierExpression(name, value){} + VariableDefinitionExpression(IPLString& name, ExpressionPtr value) : IdentifierExpression(name), m_Value(value){} virtual ~VariableDefinitionExpression() {} virtual void Print(std::ostream& os) const override; +protected: + ExpressionPtr m_Value; }; class BlockStatement : public ListExpression @@ -174,3 +176,30 @@ private: ExpressionPtr m_Body; }; +class FunctionDeclaration : public Expression +{ +public: + FunctionDeclaration(IPLString& functionName, IPLVector<IPLString>& argumentsIdentifiers, ExpressionPtr body); + virtual ~FunctionDeclaration() {} + virtual void Print(std::ostream& os) const override; +private: + IPLString m_Name; + IPLVector<IPLString> m_ArgumentsIdentifiers; + ExpressionPtr m_Body; +}; + +class TopStatements : public ListExpression +{ +public: + TopStatements() {} + virtual ~TopStatements() {} + virtual void Print(std::ostream& os) const override; +}; + +class EmptyExpression : public Expression +{ +public: + EmptyExpression() {} + virtual ~EmptyExpression() {} + virtual void Print(std::ostream& os) const override; +}; |
