编译原理之 语法分析c代码
来源:互联网 发布:淘宝网注册开店流程 编辑:程序博客网 时间:2024/06/10 07:28
#include <stdio.h>
int zbm[255]={1,10,18,11,13,11,26,6};//转换为种别码序列的“begin a:=22+33; end ”
int zb;//种别码指针
int kk=0;//标识错误类型
void lrparser();
main()
{
printf("语法分析结果:\n");
lrparser();
}
void factor()
{
void expression();
if(zbm[zb]==10||zbm[zb]==11)
zb++;
else
if (zbm[zb]==27)
{
zb++;
expression();
if (zbm[zb]==28)
{
zb++;
}
else
{
printf("')'错误!\n");
kk=1;
}
}
else
{
printf("表达式错误!\n");
kk=1;
}
}
void term()
{
factor( );
while(zbm[zb]==15||zbm[zb]==16)
{
zb++;
factor();
}
}
void expression()
{
term();
while(zbm[zb]==13||zbm[zb]==14)
{
zb++;
term();
}
}
void statement()
{
if(zbm[zb]==10)
{
zb++;
if(zbm[zb]==18)
{
zb++;
expression();
}
else
{
printf("赋值符号错误!\n");
kk=1;
}
}
else
if(zbm[zb]!=6)//书上没有这句。
{
printf("语句错误!\n");
kk=1;
}
}
void yucu()
{
statement();
while(zbm[zb]==26)
{
zb++;
statement();
}
}
void lrparser ()
{
zb=0;
if(zbm[zb]==1)
{
zb++;
yucu();
if(zbm[zb]==6)
{
zb++;
if(zbm[zb]==0&&kk==0)
printf("success!\n");
}
else
if(kk!=1)
{
printf("'缺end'错误!\n");
kk=1;
}
}
else
{
printf("'begin'错误!\n");
kk=1;
}
}
int zbm[255]={1,10,18,11,13,11,26,6};//转换为种别码序列的“begin a:=22+33; end ”
int zb;//种别码指针
int kk=0;//标识错误类型
void lrparser();
main()
{
printf("语法分析结果:\n");
lrparser();
}
void factor()
{
void expression();
if(zbm[zb]==10||zbm[zb]==11)
zb++;
else
if (zbm[zb]==27)
{
zb++;
expression();
if (zbm[zb]==28)
{
zb++;
}
else
{
printf("')'错误!\n");
kk=1;
}
}
else
{
printf("表达式错误!\n");
kk=1;
}
}
void term()
{
factor( );
while(zbm[zb]==15||zbm[zb]==16)
{
zb++;
factor();
}
}
void expression()
{
term();
while(zbm[zb]==13||zbm[zb]==14)
{
zb++;
term();
}
}
void statement()
{
if(zbm[zb]==10)
{
zb++;
if(zbm[zb]==18)
{
zb++;
expression();
}
else
{
printf("赋值符号错误!\n");
kk=1;
}
}
else
if(zbm[zb]!=6)//书上没有这句。
{
printf("语句错误!\n");
kk=1;
}
}
void yucu()
{
statement();
while(zbm[zb]==26)
{
zb++;
statement();
}
}
void lrparser ()
{
zb=0;
if(zbm[zb]==1)
{
zb++;
yucu();
if(zbm[zb]==6)
{
zb++;
if(zbm[zb]==0&&kk==0)
printf("success!\n");
}
else
if(kk!=1)
{
printf("'缺end'错误!\n");
kk=1;
}
}
else
{
printf("'begin'错误!\n");
kk=1;
}
}
- 编译原理之 语法分析c代码
- 编译原理之语法分析
- 编译原理学习之语法分析
- 编译原理之词法分析和语法分析
- 编译原理之词法分析和语法分析
- 编译原理实验之语法分析(算符优先分析算法(C语言))
- 编译原理语法分析LR1
- 编译原理语法分析
- 【编译原理】语法分析
- 编译原理—语法分析
- 编译原理 - 语法分析
- 语法分析(编译原理)
- 编译原理语法分析
- 编译原理:语法分析
- 编译原理课程设计_C--编译器_语法分析&代码生成
- 编译原理课程设计_C--编译器_语法分析&代码生成 - Justin
- 小代码--编译原理-语法分析-求解FI…
- 编译原理--递归下降语法分析源代码(C Language)
- for的基本用法 99乘法表
- 计算机科学与技术专业编译原理之词法分析代码
- CMD Telnet 命令行自动发送邮件脚本
- 分布式搜索Elasticsearch源码分析之二------索引过程源码概要分析
- 成功的条件:高人指点、贵人相助、小人监督、个人奋斗
- 编译原理之 语法分析c代码
- GDI+在Vistual C++ 2010中的配置
- 数组排序
- 2013年小型企业必须了解的七大科技趋势
- Custom Outcome Options of Task Form in SharePoint Designer on SharePoint 2013 Workflow
- JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
- 【WP8】简单介绍wp8中原生LongListSelector控件的用法
- alias rm=‘rm -i’
- Python 开发 ActiveX (comtypes+py2exe)