aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-22 16:53:48 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-22 16:53:48 +0000
commit561b76bdebd584d03d4e451375777651a9d74017 (patch)
treefdab95e056a212a26b65a96ae2af894e8f42b82e /c_compiler/include
parentf12ccd62ecf08774ce599a2e15d9042500d2760a (diff)
downloadCompiler-561b76bdebd584d03d4e451375777651a9d74017.tar.gz
Compiler-561b76bdebd584d03d4e451375777651a9d74017.zip
Have to work on case
Diffstat (limited to 'c_compiler/include')
-rw-r--r--c_compiler/include/expression.hpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp
index 21e5880..1377a22 100644
--- a/c_compiler/include/expression.hpp
+++ b/c_compiler/include/expression.hpp
@@ -30,6 +30,8 @@ public:
virtual int postfixStackPosition(VariableStackBindings bindings) const;
virtual void setPostfixExpression(Expression* postfix_expression);
virtual std::string id() const;
+ virtual ExpressionPtr getLhs() const;
+ virtual ExpressionPtr getRhs() const;
void linkExpression(Expression* next_expression);
ExpressionPtr nextExpression() const;
@@ -43,11 +45,14 @@ protected:
ExpressionPtr rhs_;
public:
OperationExpression(Expression* lhs, Expression* rhs);
+ OperationExpression(ExpressionPtr lhs, Expression* rhs);
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const = 0;
virtual int constantFold() const;
virtual void expressionDepth(unsigned& depth_count) const;
+ virtual ExpressionPtr getLhs() const;
+ virtual ExpressionPtr getRhs() const;
void evaluateExpression(VariableStackBindings bindings, unsigned& label_count) const;
};
@@ -248,6 +253,7 @@ class AssignmentExpression : public OperationExpression
{
public:
AssignmentExpression(Expression* lhs, Expression* rhs);
+ AssignmentExpression(ExpressionPtr lhs, Expression* rhs);
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
};