LL(1)预测分析程序
分析程序源代码:
LL1分析程序(包含c源码)
文法: E -> E+F | E-F | T
T -> T*F | T/F | F
F -> i | (E)
注:这实际上就是包含括号的四则运算的文法。
消除左递归:
E -> TA A -> +TA | -TA | ε
T -> FB B -> *FB | /FB | ε
F -> i | (E)
求预测分析表:
先求FIRST集和FOLLOW集:
FIRST | FOLLOW | |
---|---|---|
E | i ( | # ) |
T | i ( | + - # ) |
F | i ( | * / + - # ) |
A | + - ε | # ) |
B | * / ε | + - # ) |
再求SELECT集合:
SELECT | |
---|---|
E -> TA | i ( |
A -> +TA | + |
A -> -TA | - |
A -> ε | # ) |
T -> FB | i ( |
B -> *FB | * |
B -> /FB | / |
B -> ε | + - # ) |
F -> i | i |
F -> (E) | ( |
由SELECT集合可以得出预测分析表
i | + | - | * | / | ( | ) | # | |
---|---|---|---|---|---|---|---|---|
E | TA | 1 | 1 | 1 | 1 | TA | 1 | 1 |
A | 1 | +TA | -TA | 1 | 1 | 1 | 0 | 0 |
T | FB | 1 | 1 | 1 | 1 | FB | 1 | 1 |
B | 1 | 0 | 0 | *FB | /FB | 1 | 0 | 0 |
F | i | 1 | 1 | 1 | 1 | (E) | 1 | 1 |
注: 此处用 0 表示 ε, 因为ASCII表没有 ε ,用 1 表示没有产生式。
LL(1)预测分析程序:
程序会读取同一目录下的 input.txt 文件中的表达式:
input.txt:
双击exe, 运行结果如下:
结语:
刚刚试了下,c语言也可以使用 ε 符号, ╮(╯_╰)╭
所以,读者如果有兴趣的话也可以把我在程序中使用的 0 改回 ε
LL(1)预测分析程序相关推荐
- 编译原理预测分析程序
直接上代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<map> 4 #include<vecto ...
- 语法分析器---预测分析程序
实验二 预测分析算法的设计与实现 (8学时) 一.实验目的 通过预测分析算法的设计与实现,加深对自上而下语法分析方法的理解,尤其是对自上而下分析条件的理解. 二.实验要求 输入文法及待分析的输入 ...
- LL(1)预测分析程序C++实现
已知文法G如下,通过已知的预测分析表,输入要分析的字符串,得到分析结构附后. 已知文法G: E->TE' E'->+TE' E'->e T->FT' T'->*FT' T ...
- 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc
题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...
- 编译原理:LL(1)文法 语法分析器(预测分析表法)
设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子. 思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和F ...
- 语法分析:自上而下分析(递归下降分析法+预测分析法)
语法分析:自上而下分析 目录 语法分析:自上而下分析 知识背景 递归下降分析法 内容一:根据文法生成子程序 内容二:调用文法开始符号所对应的子程序 预测分析法 内容一:构造预测分析表 内容二:预测分析 ...
- 编译原理中LL(1)分析程序的设计---用c++程序语言实现
一.前言 作为当代大学生的我,我喜极而泣,最后一个编译原理实验报告了,这次是一个提高性实验报告.肝完这个,编译原理,这门课,再也没有实验报告了,我再也不要担心我没有头发了.行了,废话不多说,我直接呈现 ...
- 2019年物联网发展趋势与预测分析
2019年物联网发展趋势与预测分析 物联网(IoT)和其它增强现实技术正在稳步提高美国和全球各大公司的绩效表现.预计到2020年IOT相关解决方案将产生3440亿美元的收入,同时将减少1770亿美元的 ...
- 使用SQL Server数据库指标预测应用程序问题
摘要 (Summary) Database metrics can be collected, maintained, and used to help predict when processes ...
最新文章
- 搜索引擎中的URL散列
- 动态规划问题之一马当先
- DICOM 开发工具总结
- r语言 柱状图加星号_R语言绘制带有显著性字母标记的柱状图
- 随想录(校园招聘记)
- 全球第一张中文网络协议分析图——By 成都科来软件
- LeetCode从读题到自闭:204. 计数质数
- PHP静态方法中调用非静态方法
- Pandas+Pyecharts | 医院药品销售数据可视化
- 使用S32DS集成MCAL
- 利用 confluence 打造属于自己的知识库
- RTKlib软件学习(观测文件与星历文件读取)
- init mysql db error_Python mysql curs错误
- 实现一个简单的类似于手电筒的功能@[电灯泡]
- 手把手教你用jQuery Mobile做相册
- Android studio 学习 之打包
- const常量和基础数据类型
- 量子计算机论坛,IBM量子计算机取得重大突破
- 计算机高深专业术语,Math
- 时事评论--公众有权知道“砒霜门“的真像
热门文章
- matlab模糊解耦,模糊神经网络解耦MATLAB源程序
- 【项目记录】-上门洗车-汽车服务
- Android热更新
- 让你的查询支持中文拼音码模糊查询。
- 由平庸到崛起:细数那些为三星打下半壁江山的经典“Galaxy”智能机型
- Windows Style Builder一些路径分享-2022.8.21(不定期更新)
- C语言代码覆盖率测试软件,代码覆盖率检测工具GCOV
- 随笔记录——numpy4(伪随机数生成)
- 单键带定时雾化补水仪-DLT8P65SA
- uni-app分分钟解决苹果X以上型号黑线条兼容问题