📄 zsyntax.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 + -