187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//===- ExprToken.h --------------------------------------------------------===//
287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//                     The MCLinker Project
487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines// This file is distributed under the University of Illinois Open Source
687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines// License. See LICENSE.TXT for details.
787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_SCRIPT_EXPRTOKEN_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_SCRIPT_EXPRTOKEN_H_
1187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld {
1387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines/** \class ExprToken
1587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines *  \brief This class defines the interfaces to an expression token.
1687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines */
1787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass ExprToken {
1937b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
2037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  enum Kind { OPERATOR, OPERAND };
2187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
2237b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected:
2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  explicit ExprToken(Kind pKind) : m_Kind(pKind) {}
2487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
2537b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
2637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual ~ExprToken() {}
2787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
2887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  virtual void dump() const = 0;
2987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  Kind kind() const { return m_Kind; }
3187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines private:
3387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  Kind m_Kind;
3487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines};
3587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
3787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3837b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_SCRIPT_EXPRTOKEN_H_
39