福建农林大学 编译原理 课程设计(2)

2025-06-27

1.5 小结

通过JAVA自带的类库可以轻松完成动态输入【正则表达式】的程序,而C++的我目前不懂是否有这些类,如果要写自带构图的,代码会比较复杂,所以这题我用C++写的程序是固定的【正则表达式】的,这样只需要在运行核心代码前用固定方式构建好状态转换图就可以了。

3

2 LL(1)分析

2.1 LL(1)文法 S→aD D→STe|ε T→bH|H H→d|ε

2.2 LL(1)预测分析表 S D T H a S→aD D→STe e D→ε T→H H→ε b D→ε T→bH d D→ε T→H H→d # D→ε 2.3 分析程序代码

#include #include #include #include #include using namespace std; string s,stack;

string LL[255][255];

string reverse(string str)//字符串倒置 { char t[100]={0}; int len=str.length(); for(int i=0;i

void init() { //\表示没有这种转化 //\表示ε for(int i=0;i<255;i++) for(int j=0;j<255;j++) LL[i][j]=\ LL['S']['a']=\ LL['D']['a']=\ LL['D']['e']=\ LL['D']['b']=\ LL['D']['d']=\ LL['D']['#']=\ LL['T']['e']=\ LL['T']['b']=\ LL['T']['d']=\ LL['H']['e']=\ LL['H']['d']=\

4

stack=\}

void work() { puts(\符号栈 输入串 动作\ cout<

int main() { init(); puts(\请输入符号串\ cin>>s; s=s+\ work(); return 0; }

5

2.4 程序运行截图

6

2.5 小结

以【”0”】作为错误输入的标志,把2.1中给定表格中无数据的项填入0,当匹配到0时,表示输入的数据错误。因为本题要求显示【符号栈】,所以我用string而不是用stack来表示符号栈,但运用的仍然是栈的思想。这题我出错的地方在于循环条件写成【s[i]!=’#’】 (已改正),循环条件应该为【!stack.empty()】,而成功判断放在循环外,为【s[i]=='#'】。当输入错误时,一定会在循环内部被找出,或者是程序运行时抛出的异常都代表输入错误。

7


福建农林大学 编译原理 课程设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:燕山大学电力电子课程设计光伏逆变并网设计

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219