summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/automate/expression.cc
diff options
context:
space:
mode:
Diffstat (limited to '2003/i/buzz/src/automate/expression.cc')
-rw-r--r--2003/i/buzz/src/automate/expression.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/2003/i/buzz/src/automate/expression.cc b/2003/i/buzz/src/automate/expression.cc
new file mode 100644
index 0000000..99d73b8
--- /dev/null
+++ b/2003/i/buzz/src/automate/expression.cc
@@ -0,0 +1,52 @@
+// expression.cc
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+//
+#include "expression.h"
+
+namespace Automate
+{
+
+// Destructeur.
+Expression::~Expression ()
+{
+}
+
+// Destructeur.
+ExpressionNum::~ExpressionNum ()
+{
+}
+
+// Retourne la valeur de l'expression.
+int
+ExpressionNum::val (void)
+{
+ return m_num;
+}
+
+// Destructeur.
+ExpressionNumOp::~ExpressionNumOp ()
+{
+ if (m_left) delete m_left;
+ if (m_right) delete m_right;
+}
+
+// Retourne la valeur de l'expression.
+int
+ExpressionNumOp::val (void)
+{
+ switch (m_op)
+ {
+ case '-':
+ return m_left->val () - m_right->val ();
+ case '+':
+ return m_left->val () + m_right->val ();
+ case '*':
+ return m_left->val () * m_right->val ();
+ case 'n':
+ return -m_right->val ();
+ }
+ return 0;
+}
+
+}