分析程序源代码

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. 编译原理预测分析程序

    直接上代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<map> 4 #include<vecto ...

  2. 语法分析器---预测分析程序

    实验二  预测分析算法的设计与实现 (8学时) 一.实验目的 通过预测分析算法的设计与实现,加深对自上而下语法分析方法的理解,尤其是对自上而下分析条件的理解. 二.实验要求   输入文法及待分析的输入 ...

  3. LL(1)预测分析程序C++实现

    已知文法G如下,通过已知的预测分析表,输入要分析的字符串,得到分析结构附后. 已知文法G: E->TE' E'->+TE' E'->e T->FT' T'->*FT' T ...

  4. 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc

    题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...

  5. 编译原理:LL(1)文法 语法分析器(预测分析表法)

    设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子. 思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和F ...

  6. 语法分析:自上而下分析(递归下降分析法+预测分析法)

    语法分析:自上而下分析 目录 语法分析:自上而下分析 知识背景 递归下降分析法 内容一:根据文法生成子程序 内容二:调用文法开始符号所对应的子程序 预测分析法 内容一:构造预测分析表 内容二:预测分析 ...

  7. 编译原理中LL(1)分析程序的设计---用c++程序语言实现

    一.前言 作为当代大学生的我,我喜极而泣,最后一个编译原理实验报告了,这次是一个提高性实验报告.肝完这个,编译原理,这门课,再也没有实验报告了,我再也不要担心我没有头发了.行了,废话不多说,我直接呈现 ...

  8. 2019年物联网发展趋势与预测分析

    2019年物联网发展趋势与预测分析 物联网(IoT)和其它增强现实技术正在稳步提高美国和全球各大公司的绩效表现.预计到2020年IOT相关解决方案将产生3440亿美元的收入,同时将减少1770亿美元的 ...

  9. 使用SQL Server数据库指标预测应用程序问题

    摘要 (Summary) Database metrics can be collected, maintained, and used to help predict when processes ...

最新文章

  1. 搜索引擎中的URL散列
  2. 动态规划问题之一马当先
  3. DICOM 开发工具总结
  4. r语言 柱状图加星号_R语言绘制带有显著性字母标记的柱状图
  5. 随想录(校园招聘记)
  6. 全球第一张中文网络协议分析图——By 成都科来软件
  7. LeetCode从读题到自闭:204. 计数质数
  8. PHP静态方法中调用非静态方法
  9. Pandas+Pyecharts | 医院药品销售数据可视化
  10. 使用S32DS集成MCAL
  11. 利用 confluence 打造属于自己的知识库
  12. RTKlib软件学习(观测文件与星历文件读取)
  13. init mysql db error_Python mysql curs错误
  14. 实现一个简单的类似于手电筒的功能@[电灯泡]
  15. 手把手教你用jQuery Mobile做相册
  16. Android studio 学习 之打包
  17. const常量和基础数据类型
  18. 量子计算机论坛,IBM量子计算机取得重大突破
  19. 计算机高深专业术语,Math
  20. 时事评论--公众有权知道“砒霜门“的真像

热门文章

  1. matlab模糊解耦,模糊神经网络解耦MATLAB源程序
  2. 【项目记录】-上门洗车-汽车服务
  3. Android热更新
  4. 让你的查询支持中文拼音码模糊查询。
  5. 由平庸到崛起:细数那些为三星打下半壁江山的经典“Galaxy”智能机型
  6. Windows Style Builder一些路径分享-2022.8.21(不定期更新)
  7. C语言代码覆盖率测试软件,代码覆盖率检测工具GCOV
  8. 随笔记录——numpy4(伪随机数生成)
  9. 单键带定时雾化补水仪-DLT8P65SA
  10. uni-app分分钟解决苹果X以上型号黑线条兼容问题