Website Summary Files Commits Branches @commit @diff @stats
path: root / JSImpl / src / Expression.h
diff options
context:
space:
mode:
Commit9b0c6501113169cacc6a6c4ca996959e4586e304 (patch)
Author
 martin dobrev <martindobrev0@gmail.com>
2018-09-21 09:21:29 +0300
Committer
 martin dobrev <martindobrev0@gmail.com>
2018-09-21 09:23:15 +0300
Filesde1cad98fbe893a46be20dcb67cef0ea072262c4 /JSImpl/src/Expression.h
IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.tar
IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.tar.gz
IPL-9b0c6501113169cacc6a6c4ca996959e4586e304.zip
Parent7ee2c286210ed2ef684636ec031b722dc939c5ec (diff)
Implement TopStatement and Program rules.
1 files changed, 32 insertions, 3 deletions
-rw-r--r--JSImpl/src/Expression.h35
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;
+};