📄 typedef.h
字号:
#ifndef TYPEDEF_H_
#define TYPEDEF_H_
#include <string>
using namespace std;
const int MAXCHILDREN = 5;
const int BUCKET_SIZE = 211;
typedef enum {
ENDFILE,ERROR,
IF,ELSE,WHILE,RETURN,VOID,INT,
PLUS,MINUS,MUL,DIV,LT,LTEQ,GT,GTEQ,EQ,
NEQ,ASSIGN,SEMI,COMMA,LPAREN,RPAREN,
LSQUAR,RSQUAR,LBRACE,RBRACE,LCOMMENT,RCOMMENT,
ID,NUMBER
} TokenType;
typedef enum {
DECLAR,OP,RELOP,CSTMT,STMT,REFER,CALL,PARAM,EXP,NUM
} Kind;
typedef enum {
VAR_DECLAR,FUNC_DECLAR,ARRAY_DECLAR
} DeclarKind;
typedef enum {
IF_STMT,WHILE_STMT,RETURN_STMT
} StmtKind;
typedef enum {
ASSIGN_EXP,SIMPLE_EXP
} ExpKind;
typedef union {
DeclarKind declarK;StmtKind stmtK;ExpKind expK;
} ChildKind;
typedef enum {
BOOLEAN_TYPE,INTEGER_TYPE,VOID_TYPE,ERROR_TYPE
} Type;
typedef enum {
VAR_SYMBOL,FUNC_SYMBOL,ARRAY_SYMBOL,
ARRAYADDR_SYMBOL,ERROR_SYMBOL
} SymbolType;
struct bucketlist;
typedef struct treenode{
Kind kind;
ChildKind childkind;
TokenType tokenT;
//attribute
string name;
Type type;
int arraynum;
//used only when is compound statement
bucketlist * pBucketList;
treenode *pChild[MAXCHILDREN];
treenode *pNext;
treenode *pPrev; //used only when in argument-list
int lineno;
} TreeNode;
typedef struct symbolrecord{
symbolrecord * pNext;
string name;
Type type;
SymbolType symboltype;
//used only when is function declaration
symbolrecord * pParam;
int paramAlloc;
int localAlloc;
int nestlevel;
int location;
int lineno;
} SymbolRecord;
typedef struct bucketlist{
bucketlist * pNext;
SymbolRecord * pRecord[BUCKET_SIZE];
} BucketList;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -