📄 parser.h
字号:
#ifndef PARSER_H_
#define PARSER_H_
#include <fstream.h>
#define ZERO 5000
#define ONE 5001
//定义错误类型
#define COMMON_ERROR 8
#define IF_ERROR 9
#define FOR_ERROR 10
#define REPEAT_ERROR 11
#define ASSIGN_ERROR 12
//两个常量
const int MAX_EXPR_SIZE = 1000;
const int MAX_EQU_SIZE = 1024;
//全局变量定义
int error_count;
int variable_count;
int temp_count;
int lineOfProc;
int lineOfEqu;
int curr_addr;
int curr_code;
int expr_length;
int pos;
char curr_name[30];
int expr_rtn_addr;
bool expr_rtn_addr_control;
ifstream SymbleIn;
ofstream EquOut;
typedef struct Equ
{
int op;
int arg1;
int arg2;
int result;
}Equ;
typedef struct Expr
{
int addr;
int code;
}Expr;
Equ equ[MAX_EQU_SIZE];
Expr expr[MAX_EXPR_SIZE];
//function statement
void Parser();
void GetNextSymble();
void Error(int);
void Statement();
int Begin();
int EquPush(int, int, int, int);
void BackPatch(int, int);
int New_Temp();
void Gen_Equ(int, int, int, int);
//语句分析函数
int Sen_Analysis();
int Sen_Assign();
int Sen_If();
int Sen_For();
int Sen_While();
int Sen_Repeat();
//算术表达式分析
void Expression_Init();
int Expression_Analysis();
int E_AddSub();
int E_AddSub(int);
int T_MulDiv();
int T_MulDiv(int);
int F_Number();
//布尔表达式分析
int Bool_Analysis();
void Bool_Init();
int B_OR();
int B1_OR(int);
int L_AND();
int L1_AND(int);
int M_NOT();
int K_END();
int K_CMP();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -