From 9b0c6501113169cacc6a6c4ca996959e4586e304 Mon Sep 17 00:00:00 2001 From: martin dobrev Date: Fri, 21 Sep 2018 09:21:29 +0300 Subject: Implement TopStatement and Program rules. --- JSImpl/src/Expression.h | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'JSImpl/src/Expression.h') 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& argumentsIdentifiers, ExpressionPtr body); + virtual ~FunctionDeclaration() {} + virtual void Print(std::ostream& os) const override; +private: + IPLString m_Name; + IPLVector 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; +}; -- cgit v1.3.1-23-gd82d