summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/automate/expression.cc
blob: 99d73b846e7e4de2fb383c6f2847fbbbd8f9fc7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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;
}

}