一、目标

本次实验的主要目的是对自定义的程序语言的词法分析器程序构造,我从 C 语言当中选择了部分具有代表性的子集,实现词法分析器,主要是对编译原理课程中学习的从正则达式转化为 NFA,再从 NFA 转化为 DFA 以及后续的代码生成的过程有更深刻的认识。同时,也希望对于在编译原理课程中所体现出的计算机科学当中的一些朴素而优美的思想有更多的体会。

二、内容概述

本报告主要描述了一个简单的词法分析器构造过程,包括最终成品的功能概要,实现过程中的理论推导,具体的核心算法和数据结构的描述,以及个人的收获和体会。

三、实验环境

  • 操作系统 Win8.1
  • 实验的编译器 eclipse
  • 编码格式 Utf-8

3.1 语言定义

3.1.1 记号定义

3.1.1.1 保留字

我选择了 C 语言当中一部分具有代表性的保留字,同时为了保持整个编译原理课程实验的延续性和后续语义分析的实验内容,选择的保留字能够涵盖程序设计中的顺序、分支、和循环结构,这样也可以很好的对正则表达式当中的三种基本运算连接、或、闭包运算形成很好的对应,除此之外,选择了能够形成对函数调用,变量声明进行支持的部分保留字。具体选择的保留字有如下几个:

else, if,int,double,char,do,continue,break,float, return, void, while,for

3.1.1.2 特殊符号

  • 算术运算符:+、-、*、/
  • 比较运算符:<、<=、>、>=、==、!=
  • 分割符号:;、,
  • 括号:()、[]、{}
  • 数字:支持整数int,浮点数doule、float、char

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1359.html

c语言lr分析器的设计与实现_[源码和文档分享]基于有限自动机的词法分析器构造...相关推荐

  1. python下俄罗斯方块的游戏设计_[源码和文档分享]基于Python的PyGame的俄罗斯方块游戏设计与实现...

    摘 要 近年来,随着游戏产业的突飞猛进,游戏玩家的技术也是与日俱增,当你看见游戏高手完美的表演时,你是否想过我也能达到那种水平,本程序用Python语言编写俄罗斯方块,左侧显示正在运行的游戏,右边显示 ...

  2. bootstrap signin将邮件改成用户名_[源码和文档分享]基于VC++和Oracle数据库的邮件管理系统的设计与实现...

    摘 要 电子邮件的使用简易,投递迅速,收费低廉,易于保存,全球畅通无阻,使得电子邮件被广泛地应用,当前流行的各大邮件系统除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功 ...

  3. mfc 怎么让键盘上下左右控制图片移动_[源码和文档分享]基于MFC的陨石撞飞机游戏设计与实现...

    摘 要 用MFC设计一个陨石撞飞机的平面游戏,陨石不断下落,飞机通过键盘的上下左右键移动以躲避陨石.当陨石撞到飞机时,显示游戏结束提示对话框.设计开始要对开发环境VC 6.0的熟悉,需要学会如何添加资 ...

  4. java lr分析表建立程序_[源码和文档分享]基于Java实现的LR(1)分析法语法分析程序...

    一 需求分析 自行定义文法, 运用语法分析方法对输入语句进行语法分析并输出结果,加深对语法分析过程的理解. 二 程序设计 2.1 总体思路 此次实验使用java编写.程序读取输入的token序列(如i ...

  5. jsp登录密码加密_[源码和文档分享]基于JSP和MYSQL数据库的在线购物网站的设计与实现...

    1 系统概述 1.1 系统描述 IShopping购物网站是一个在线的百货商店,用户可以通过网络购买我们的商品,其基本功能包括用户的注册.登录,浏览所有商品,浏览分类商品,查看商品的详细信息,购买商品 ...

  6. c语言中缀表达式求值_[源码和文档分享]基于C++的表达式计算求值

    一.使用说明 1.1 项目简介 表达式求值是程序设计语言编译中的一个最基本的问题,就是将一个表达式转化为逆波兰表达式并求值.具体要求是以字符序列的形式从终端输入语法正确的.不含变量的整数表达式,并利用 ...

  7. 用c语言写抽选车牌号的程序,[源码和文档分享]基于C语言实现的汽车牌照的快速查询...

    1 课题概述 1.1 课题任务 在汽车数据的信息模型中,汽车牌照是具有结构特点的一类关键字.汽车牌照是字母和数字混编的,例如01B7238.利用查找和排序算法,实现辽宁省内汽车牌照的快速查找. 设计汽 ...

  8. 迷宫搜索问题最短路_[源码和文档分享]基于C语言实现的勇闯迷宫游戏

    1 项目简介 迷宫只有两个门,一个门叫入口,另一个门叫出口.一个骑士骑马从入口进入迷宫,迷宫设置很多障碍,骑士需要在迷宫中寻找通路以到达出口. 2 项目功能要求 迷宫问题的求解过程可以采用回溯法即在一 ...

  9. android ble 助手源码_[源码和文档分享]基于Android的生活助手APP的设计与实现

    摘 要 随着移动互联网的高速发展,Android操作系统在移动设备中地位已经被牢牢稳固.然而大量的Android设备高速普及过程中,与其配套的Android应用的开发速度和项目质量极为令人担忧.本课题 ...

最新文章

  1. AngularJS HTML DOM
  2. boost::graph模块实现Graphviz DOT 语言阅读器
  3. 解决导出word迅雷读取地址和下载出错
  4. OpenMMLab的新篇章
  5. EasyUI:easyui-combogrid(设置默认值)
  6. android程序中关于webview加载html文件
  7. vivado和modelsim联合仿真实现奇分频
  8. php admin_priv,ECshop后台开发模块步骤
  9. centos报acpi 错误解决方法实测有用
  10. c语言实现的sin cos查找表_如何实现EXCEL表数据的自动查找、匹配
  11. 【解决:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2....Could not star】
  12. JAVA智能分析的简单聚众筹平台计算机毕业设计Mybatis+系统+数据库+调试部署
  13. Http协议详解版本一
  14. 抖音怎么发起挑战 发起挑战怎么玩
  15. 计算机辅助设计技术水平证书,计算机程序设计工程师技术水平(java)证书就是计算机技术与软件专业技术资格考试的程序员证书么?...
  16. 33暴力破解(MD5撞击)
  17. vue 应用中Throttling navigation to prevent the browser from hanging.问题
  18. 3D建模,打印正当时
  19. python生成图文并茂的pdf--财务报表(四)封面(首页和正页定义)
  20. LINQ之Update

热门文章

  1. html静态网页模板_aspnetcore 实现简单的伪静态化
  2. mysql 数据库复制软件_mysql 快速复制数据库
  3. python构造方法new_Python 之 __new__() 方法与实例化(转)
  4. linux中的变量前加__user,linux中的环境变量,别名,变量传递和函数块
  5. ListView gridivew.setOnItemClickListener无效
  6. 本地在线安装mysql_本地安装MySql服务
  7. Java的ATM界面任务台选择同时有文本和数据库登陆注册
  8. 组合数学及其应用——polya计数
  9. HTTP权威指南-学习笔记(三)HTTP方法,状态码
  10. 6. 成交量基础分析