资源简介
编译原理实验,语法分析的递归下降分析法,C语言实现的源代码
代码片段和文件信息
#include “stdio.h“
#define N 50
//////////////////
/*
文法 G[Z]:Z->aAcB|Bd
A->AaB|c
B->bBcA|b
*/
void Z();
void A();
void A_();
void B();
void B_();
void advance();
void error();
//////////////////
char sym;
char str[N];
char *next;
int i;
int flag=0f;
///////////////////
void Z()
{
printf(“Z\n“);
if(flag)
return;
if(sym==‘a‘)
{
advance();
A();
if(sym==‘c‘)
{
advance();
B();
}
else
error();
}
else
if(sym==‘b‘)
{
B();
if(sym==‘d‘)
{
advance();
}
else
error();
}
else
error();
}
///////////////////
void A()
{
if(flag)
return;
printf(“A\n“);
if(sym==‘c‘)
{
advance();
if(flag)
return;
A_();
}
}
///////////////////
void A_()
{
if(flag)
return;
printf(“A_\n“);
if(sym==‘a‘)
{
advance();
if(flag)
return;
B();
A_();
}
}
///////////////////
void B()
{
printf(“B\n“);
if(sym==‘b‘)
{
advance();
if(flag)
return;
B_();
}
else
if(*(next+1)==‘#‘)
error();
}
///////////////////
void B_()
{
if(flag)
return;
printf(“B_\n“);
if(*(next+1)!=‘#‘)
{
B();
if(sym==‘c‘)
{
advance();
if(flag)
return;
A();
}
}
}
///////////////////
void advance()
{
printf(“advance\n“);
if(*(next+1)!=‘#‘)
{
next++;
sym=*next;
printf(“%c\n“*next);
}
else
{
flag=1;
}
}
//////////////////
void error()
{
printf(“This sentence is not in accordance with the rules of grammar\n“);//不符合文法
}
//////////////////
void main()
{
next=str;
i=0;
printf(“input a string :\n“);
scanf(“%c“&str[i]);
while(str[i]!=‘#‘)
{
i++;
scanf(“%c“&str[i]);
}
sym=str[0];
Z();
if(flag)
printf(“grammaticality\n“); //符合 文法
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1837 2010-04-13 15:52 shy2.cpp
----------- --------- ---------- ----- ----
1837 1
- 上一篇:wanlix mindows操作系统源码
- 下一篇:语法分析c语言程序代码
相关资源
- 北邮-编译原理-词法分析
- 现代编译原理-C语言描述
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 赋值语句翻译c语言实现四元式
- 语法分析c语言实现程序代码+实验报告
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- 山东大学编译原理实验源代码c++版
- 语法分析器 tiny语言语法分析
- C++语法分析器
- 简单函数绘图语言的解释器
- 语法分析c语言实现含报告
- Lex和Yacc从入门到精通.pdf
- 简易词法分析器——基于C语言
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- 编译原理LL1文法的mfc实现含消除左递
- 编译原理词法分析实验
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- 编译原理语义分析程序 c++实现
- LL1语法分析器(c++)
- 编译原理 课程设计 DAG 报告+源码C++版
- 编译原理课程设计----语法分析器(
评论
共有 条评论