资源简介
实验2 文法的读入、判定和处理
一、实验目的
熟悉文法的结构,了解文法在计算机内的表示方法。
二、实验内容
1、 设计一个表示文法的数据结构;
2、 从文本文件中读入文法,利用定义的数据结构存放文法,并输出;
3、 本实验结果将来还有用。
三、实验要求
1、 了解文法定义的4个部分:
G(Vn, Vt, S, P)
Vn 文法的非终结符号集合,在实验中用大写的英文字母表示;
Vt 文法的终结符号集合,在实验中用小写的英文字母表示;
S 开始符号,在实验中是Vn集合中的一个元素;
P 产生式,分左部和右部,左部为非终结符号中的一个,右部为终结符号或非终结符号组成的字符串,如S-
代码片段和文件信息
#include
#include
#include
#define MAX 20
char x[20][100]; //用于存储读入的文法内容
char y[20][100]; //用于存储产生式
int maxline=0; //初始化读入内容的行数
char *Gdelete(char ch[]); //定义删除重复字符
typedef struct //定义产生式的左部、右部
{
char l[5];
char r[8];
}G;
G g[MAX];
typedef struct //定义文法的四要素
{
char v1[10];
char v2[10];
char s[1];
char p[100];
}GR;
GR gr[MAX];
bool isN(char c) //定义非终结符
{
if(c>=‘A‘&&c<=‘Z‘)
return 1;
else return 0;
}
bool isT(char c) //定义终结符
{
if(c>=‘a‘&&c<=‘z‘)
return 1;
else return 0;
}
void Ganalyze(FILE *f) //文法分析
{
char ch;
char *fh;
int mn;
int str;
int hflag=-1;
char x1[50]={‘ ‘}x2[50]={‘ ‘}xp[50]={‘ ‘};
char *temp1*temp2*
- 上一篇:C++ 一个用api封装的串口类
- 下一篇:VC++组播通信源码
相关资源
- 编译原理龙书中英版第二版 中文版
- 编译原理-词语语法语义分析
- 编译原理LLLRSLR作业集锦
- LR0文法分析器
- 编译原理课设含词法语法设计以及实
- 编译原理 pl0编译器 c语言版
- 编译原理课程设计C语言子集
- 编译原理实验,包括词法分析、语法
- 编译原理课程设计 使用lex和yacc
- 编译原理 语义分析及中间代码生成
- 利用LEX自动生成词法分析程序
- 编译原理课程设计-词法分析
- 编译原理扫描程序
- 编译原理课程设计代码+报告
- 布尔表达式转换为四元式
- 张素琴编译原理课后附录C语言版
- 河北工业大学编译原理实验报告
- 编译原理上机实习小子集的实现
- 编译原理实验查填符号表
- 编译原理词法分析C语言实现实验报告
- 编译原理 LL1分析方法 源代码C++
- 预测分析表 语法分析
- 小型编译器编译原理课设
- 编译原理实验报告PL/0语言功能扩充
- 编译原理课程设计,源码+报告
- 编译原理课程设计-FOR循环 递归下降法
- 编译原理 C编译器
- 南京工业大学 编译原理课程设计 含详
- 词法分析程序的设计与实现
- LL1文法分析c语言代码
评论
共有 条评论