?? 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 + -