-
Notifications
You must be signed in to change notification settings - Fork 0
/
ASTBranchNode.h
50 lines (38 loc) · 1.11 KB
/
ASTBranchNode.h
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
/*
* File: ASTBranchNode.h
* Author: claire
*
* Created on October 9, 2013, 12:09 AM
*/
#ifndef ASTBRANCHNODE_H
#define ASTBRANCHNODE_H
#include "ASTStatementNode.h"
#include "ASTExpressionNode.h"
#include "ASTCaseNode.h"
/*ASTBranchNode represents the branch statements within the code. It is a subclass
* of ASTStatementNode. It contains an override of the
* print statement. It keeps track of:
* -pointer to the expression which it branches on
* -pointer to the first case statement
*/
class ASTBranchNode : public ASTStatementNode{
public:
ASTBranchNode();
ASTBranchNode(const ASTBranchNode& orig);
ASTBranchNode& operator = (const ASTBranchNode &rhs);
virtual ~ASTBranchNode();
void semAnalyze();
void scopeAnalyze();
void typeAnalyze();
void printNode(int indent, ostream * output);
string genQuadruples();
void caseAnalyze();
bool contains(int x);
bool returnAnalyze();
vector<int> caseList;
bool defaultReached;
ASTExpressionNode * expression;
ASTCaseNode * firstCase;
private:
};
#endif /* ASTBRANCHNODE_H */