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

📄 zsyntax.h

📁 vc实现的pl0编译器,有读取输出功能-read() -write(),这个源码对初学编译原理者有很好的指导作用,我当初学的时候用了3天看懂了源码,也对编译原理更加理解了,毕竟只学理论不看代码是不可能
💻 H
字号:
///////////////////////////////////////////////////////////////
/*
	语法分析内核程序 0.1 (2003.10.22) [声明文件]
	作者:Dwing
*/
///////////////////////////////////////////////////////////////
#ifndef _ZSYNTAX_H_
#define _ZSYNTAX_H_

#include <memory.h>
#include <stdio.h>
#include "zAsmchar.h"
#include "zStrchar.h"
#include "zStkchar.h"

#define MAX_VN		64		//最大非终结符个数
#define MAX_VT		64		//最大终结符个数
#define MAX_P		64		//最大正规式个数
#define MAX_RIGHT	64		//最大正规式右式长度
#define MAX_FIRST	64		//最大FIRST集合元素个数
#define MAX_FOLLOW	64		//最大FOLLOW集合元素个数
#define MAX_SELECT	64		//最大SELECT集合元素个数
#define MAX_TEST	64		//最大测试字符串长度
#define MAX_STACK	64		//最大栈长度
///////////////////////////////////////////////////////////////
class zSyntax
{
public:
	zAsmchar	*vn;				//非终结符集
	zAsmchar	*vt;				//终结符集
	char		left[MAX_P];		//产生式左部
	zStrchar	*right[MAX_P];		//产生式右部
	long		pnum;				//产生式个数
	zAsmchar	*first[MAX_VN];			//FIRST集
	zAsmchar	*follow[MAX_VN];		//FOLLOW集
	zAsmchar	*select[MAX_P];			//SELECT集
	zStrchar	*m[MAX_VN][MAX_VT+1];	//"+1" for '@'
	char		test[MAX_TEST];		//测试字串
	char		start;				//开始符号
private:
	int		check1(char *s,char c);
	int		dofirst1(long &i,char c);
public:
			zSyntax();
			~zSyntax()			{reset();}
	void	reset();
	int		setvn(char *in);
	int		setvt(char *in);
	int		addp(char *p);
	void	setstart(char vc)	{start=vc;}
	int		settest(char *t);
	int		check();
	int		dofirst();
	int		dofollow();
	int		doselect();
	int		checkll1();
	void	doform();
	int		dotest(char *b);
};
///////////////////////////////////////////////////////////////
#endif
///////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -