/* * expressionTree.h * * type definitions for supporting the expression tree. * */ #ifndef _EXPRESSIONTREE_H_ #define _EXPRESSIONTREE_H_ enum OperandType {Cell, Literal}; typedef struct CellToken { int column; // column A = 0, B = 1, etc. int row; } CellToken; typedef struct OperandToken { OperandType opType; int literalID; // valid if opType == Literal CellToken cellID; // valid if opType == Cell } OperandToken; enum OperatorToken {Plus, Minus, Mult, Div, LeftParen, Error}; enum TokenType {OperatorTokenType, CellTokenType, LiteralTokenType}; typedef struct ExpressionTreeToken { TokenType tokenType; CellToken cellID; // valid if tokenType == CellTokenType OperatorToken operatorToken; // valid if tokenType == OperatorTokenType int literalID; // valid if tokenType == LiteralTokenType } ExpressionTreeToken; class ExpressionTreeNode { ExpressionTreeToken token; ExpressionTreeNode *left; ExpressionTreeNode *right; friend class ExpressionTree; }; class ExpressionTree { public: // You will have to write functions that work on // ExpressionTree. Here are some examples: // void makeEmpty(); // void printTree(); // int Evaluate(Spreadsheet & spreadsheet); private: ExpressionTreeNode *root; }; #endif // _EXPRESSIONTREE_H