博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【编译原理】c++实现自上而下语法分析器
阅读量:4652 次
发布时间:2019-06-09

本文共 1446 字,大约阅读时间需要 4 分钟。

写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文!

本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8964342.html

 

 

  使用递归下降子程序实现的PL/0语言的算术表达式的自上而下语法分析。该语言的其他语法实现思想与此一致,故不赘述。

  运行此程序前,必须先将代码通过:的词法分析,生成词法表(词法表是txt文件,为了语法分析成功,务必删除文件中最后空着的一行,即文件末尾不可以留空白行)。生成的该词法表为此程序的必要输入。

/*this code was first initiated by TZ,COI,HZAUcontact email:xmb028@163.compersonal website:wnm1503303791.github.iopersonal blogs:www.cnblogs.com/acm-icpcer/this code has been posted on my personal blog,checking url:www.cnblogs.com/acm-icpcer/p/8964342.htmlCopyright 2018/4/27 TZ.All Rights Reserved.*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;/*S->X(AX)*|AX(AX)*X->Y(MY)*Y->I|N|(S)A->+|-M->*|/C->=|#|<|<=|>|>= */char buffer[1024];bool x(fstream &f);bool s(fstream &f);bool preproccess(char *a,char *b){ int i1=0,i2=1; memset(b,1024,'\0'); while(a[i2]!=',') { b[i1]=a[i2]; ++i1,++i2; } return true;}bool a(fstream &f){ f.getline(buffer,1024); char t[1024];//存放字符标志 preproccess(buffer,t); cout<
<<","<
<

 

运行示例:

1、在词法分析器中输入待分析代码:

2、检查词法分析表,删除文件最后的空行:

 

3、运行本次的语法分析程序:

 

 

附产生式推导过程:

 

 

 

tz

first posted@COI HZAU,2018/4/27

last updated@COI HZAU,2018/4/28

转载于:https://www.cnblogs.com/acm-icpcer/p/8964342.html

你可能感兴趣的文章
字典树从第i个构造HDU2846
查看>>
SQL优化笔记(二)—CPU优化
查看>>
bzoj 1042 HAOI2008 硬币购物
查看>>
JS 心得总结
查看>>
WINDOWS 下安装boost
查看>>
Log4j(1)--hellloworld
查看>>
java中equals和 == 的区别
查看>>
greenDao 3.0基础
查看>>
CSS自学笔记(15):CSS3多列布局
查看>>
Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作...
查看>>
好吧,如果一定要RESTFUL的DJANGO
查看>>
Java类的执行顺序
查看>>
Why ngx-uploader doesn't like to cooperate with .net core 2.x?
查看>>
iOS-Senior20-Map定位
查看>>
Apache本地环境部署
查看>>
开发模式接入
查看>>
java 中的复制(将D盘中的文件复制到E盘中)
查看>>
【原创】谈谈redis的热key问题如何解决
查看>>
LoadLibrary 失败 GetLastError 126
查看>>
Monty Hall 问题与贝叶斯定理的理解
查看>>