⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.h

📁 一个简单的语法分析器,实现对布尔表达式,算术表达式的分析,以及if语句,FOR语句,WHILE语句,DO_WHILE语句的分析
💻 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 + -