编译技术的作业笔记
来源:互联网 发布:网络建设 需求分析 编辑:程序博客网 时间:2024/06/03 14:07
昨天考完日语之后,就知道了要悲剧(其实没考我就知道要悲剧),无奈之,今天继续做起了课设,希望能够尽早的完成它。
因为期末很多报告,昨晚做了一下编译技术的作业,题目 1:C 标识符的识别 2:词法分析程序。。。
他们都说1做好了,于是乎我就做题2,其实也挺简单的,就是从.C 中分析字符,一句话就是怎么样筛选出那些输入的字符,
老师为了考虑大多数人,降低了难度。
课设做了两周了,用JSP做东西也开始熟练起来,现在突然用起C ,还真的有点不太习惯,不过终于感觉到了C的灵活性了。。。
想怎么写就怎么写,编译器不会束缚太多。。。
其实,词法分析程序,要做得完善还是挺难的(自己单独在短时间完成)。这里我有两个思路来做一部分,
使用了一种简单的方法。
1:比较简单的
我首先利用 freopen("1.txt", "r", stdin); 默认遇到 scanf 就读取文件中的内容,这里读取的是以字符串
的方式,所以,如果以我定义的规则来做词法的分析,每个不相关联的代码必须要以空格分开,不然会造成
分析出错。。
举个例子说明:
int main()
如果是这样,main和 ( 就不能分析出来,因为在我们的表中不可能存放这样的情况,
必须这么写 :
int main ( )
这样就简单了。。。
2:相对复杂,但是方便程序的编写,符合大家的习惯
其实这中方法也挺好实现的,我来说下思路。
首先同样是从文件中读取,我们可以 以行为单位来读取 ,然后分析这一行的字符串的内容。
这里的分析方法,我是将取到的每一行的字符串后,从头开始扫描,
其中会有几种结束的条件:
1:遇到 “;”
2:“(”和“)”
3“{”和“}”
4:不考虑字符串的情况,老师说的
5:空格
在对这一行的字符串的扫描时,匹配我们的表,并且记录,记录可以用结构来封装,
动态的方式便于分析相对大的程序,提高程序的灵活性;
现在来描述一下我理解的情况(可能有些地方不对,请高手指教)
当我读取到每一行的内容后,又一个一个的字符开始读取,遇到上述的条件,
提取出一个字符串,然后与我们的表匹配。
这里我以一行的字符串为例子描述
大致的流程图如下:
所以,这里我们还得规定就是在程序中,每一行只能写一句程序。
- 编译技术的作业笔记
- 编译技术初探-作业摘抄
- PASCAL编译作业的代码
- 西瓜的编译原理作业
- 接口的作业笔记
- 编译作业
- 编译技术的应用
- 西瓜的编译原理作业 AOJ 842
- AOJ.842 西瓜的编译原理作业
- Java 相关的编译技术
- 编译busybox的笔记
- 有关编译的笔记
- SAP笔记-FICO 作业分割的理解
- 大型机笔记:作业的六个阶段
- 做TicTacToe作业时的笔记
- 接口作业的笔记之简答题
- 编译原理作业小结
- 编译原理作业有感
- Build Cookbook
- 《Windows核心编程》第9章 用内核对象进行线程同步
- 编程技巧:用JQuery异步实现顺序加载外部脚本
- 《金山卫士开源--让互联网拥抱安全》语音互动实录
- POJ 3714 raid
- 编译技术的作业笔记
- onmode -BC 1
- Customization
- 编程技巧:用JQuery的lazyload.js实现图片异步载入
- magento--12--24--2010
- SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
- Configuring a New Product
- 这就是生活
- Android_Build_System