parser.h

来自「一个简单的语法分析器,实现对布尔表达式,算术表达式的分析,以及if语句,FOR语」· C头文件 代码 · 共 88 行

H
88
字号
#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 + =
减小字号Ctrl + -
显示快捷键?