编译原理实验报告(c语言)

编译原理实验报告

1

实验项目 :词法分析程序实验

一、实验的目的与任务:

编译原理是计算机类专业特别是计算机软件专业的一门重要专业课。设置该课程的目的在于系统地向

学生讲述编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现方法,使学生通过学习既掌

握编译理论和方法方面的基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。编译原

理是一门理论性和实践性都比较强的课程。进行上机实验的目的是使学生通过完成上机实验题目加深对课

堂教学内容的理解。同时培养学生实际动手能力。

编译实验由三个独立实验组成,按照由浅入深进行排列,希望通过本实验使学生更深学习并理解编译

的主要过程和相关方法。

词法分析的目的是将输入的源程序进行划分,给出基本符号 (token)的序列,并掠过注解和空格等

分隔符号。基本符号是与输入的语言定义的词法所规定的终结符。

本实验要求学生编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本

保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇

到错误时可显示 “Error”,然后跳过错误部分继续进行)

二、题目分析

1.这里采用C语言编写的源程序作为词法分析程序的输入数据,输入数据保存在 “in.txt”记事本中,将分

析结果存在 “out.txt”记事本中。词法分析器的源代码使用C语言编写。

2. 下面就词法分析程序中的主要变量进行说明:

主函数main():

打开要分析的C语言源程序,若不能正确打开,则报错。

先从源程序中读入一个字符ch,然后进行如下处理:

1、cp消耗掉空格,制表符,换行符后,cp数组复位,开始检测cp;

2、数字检测,对照符号表输出,若匹配成功,则返回序号;

3、字符串检测, 对照符号表输出,若匹配成功,则返回序号;

4、基本保留字检测,对照符号表输出,若匹配成功,则返回序号;

5、运算符检测,对照符号表输出,若匹配成功,则返回序号;注意这里碰到 ‘/’时,要判断后面是

否跟着是注释语句。是则跳过,不是则输出运算符。

6、分隔符 (界符)检测,对照符号表输出,若匹配成功,则返回序号;

7、排错处理;

结束。

3.以下给定一个C语言的符号表的设计和结构:

C语言基本保留

字表

main 1 if 12 sizeof 23

void 2 else 13 return 24

int 3 switch 14

float 4 case 15

double 5 for 16

char 6 do 17

struct 7 while 18

const 8 goto 19

extern 9 continue 20 常数 28

register 10 break 21 自定义字符 29

static 11 default 22

运算符 分隔符

‘+' 31 ; 41

‘-’ 32 : 42

‘*’ 33 , 43

‘/'

编译原理实验二C语言实现,编译原理实验报告(c语言).pdf相关推荐

  1. 20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告

    <Java程序设计>实验二(Java面向对象程序设计)实验报告 目录 改变 Java面向对象程序设计实验要求 实验成果 课后思考 改变 看了下之前实验二的整体,很搞笑,大图+代码,没了.. ...

  2. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  3. 实验二 无线网络环境RSSI测量实验

    无线网络技术教程第四版实验二 无线网络环境RSSI测量实验 目录 无线网络技术教程第四版实验二 无线网络环境RSSI测量实验 1 实验要求和目的 2 实验原理和背景 3 实验环境和软件 4 实验过程与 ...

  4. 实验二《面向对象程序设计》_实验报告

    实验二<面向对象程序设计>_实验报告 一.实验前期预习准备 Junit的安装和配置 选择File->Setting打开设置对话框,在设置对话框中选择Plugins, 单击Instal ...

  5. Linux内核实验孟宁,《linux内核分析》实验二:时间片轮转多道程序运行原理

    一.概述 本文通过分析一个简单的时间片轮转多道程序的内核 mykernel,来理解操作系统是如何工作的. mykernel 是孟宁老师的一个开源项目,借助 Linux 内核部分源代码模拟存储程序计算机 ...

  6. 2016-2017-2 20155117实验二《Java面向对象程序设计》实验报告

    实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.参考Intellj IDEA 简易教程 提交 ...

  7. java构成对象的三要素_20155237 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告...

    20155237 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  8. 实验二 面向对象(一)(预习报告)

    面向对象--Java实验报告 实验二:Java面向对象(二) 实验二 面向对象(一)(预习报告) <center> <strong>姓名:</strong> < ...

  9. c语言贪吃蛇大作业报告,C语言贪吃蛇实验报告

    C语言贪吃蛇实验报告 C 语言程序设计实训报告姓 名 专 业 班 级 指导教师 二 011 年 7 月 14 日I I目录1 实训目的和要求 11.1 实训目的和任务 11.2 实训要求 12 实训任 ...

  10. java面向对象程序基础实验_20165115 实验二《Java面向对象程序设计》实验报告

    20165115 实验二 面向对象程序设计 这一次的实验,老师按照实验内容的不同将实验分成了五个部分进行.五个部分的侧重难易都有区别,实验报告中的叙述也会有所区别. 第一部分 先上实验结果截图: 这一 ...

最新文章

  1. 《C++ Primer Plus》第8章 函数探幽 学习笔记
  2. 【听课笔记】国立交通大学《如何成功投稿国际科学期刊》 投稿准备+审稿流程剖析...
  3. 记一次 Git 操作的糟心之旅
  4. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。
  5. 【Linux】一步一步学Linux——passwd文件详解(107)
  6. 发动机压缩比怎么计算公式_2020沃德十佳发动机出炉:这三款机头,20万内就能买到...
  7. 一天学会php(下)
  8. Cron 触发器及相关内容 (第一部分)
  9. WPF Demo20 模板
  10. 译:在C#中使用LINQ To SQL
  11. 微信公众号+web后台的工资条发放功能的实现
  12. json对象数组转数组方法
  13. python 公众号付费视频地址_Python下载微信公众号文章内的视频
  14. ps3 2.0固件升级导致wifi失败
  15. java 加背景颜色_Java 给PPT幻灯片添加背景颜色和背景图片
  16. c#微信企业号开发之消息推送
  17. 【vue】To install them, you can run: npm install --save aws-sdk module
  18. 湖州智慧社保显示服务器繁忙,湖州智慧社保
  19. 『NLP自然语言处理』中文文本的分词、去标点符号、去停用词、词性标注
  20. Lumerical官方案例、FDTD时域有限差分法仿真学习(十七)——Y分支功分器

热门文章

  1. Mac终端没有命令失效
  2. Unity中LitJson的使用
  3. wifi协议-802
  4. git使用puttygen生成公钥私钥
  5. IP地址库ipip.net
  6. 16qam星座图 matlab,16QAM星座图
  7. java asm 中文文档_ASM 简介
  8. 解决nginx下加载eot|otf|ttf|woff|svg等404 错误问题
  9. 尚学堂python开发工具_尚学堂百战程序员分享:Python的数据模型
  10. 如何选择项目管理软件?