本次试验的内容是四则运算——或者说表达式求值,我对此并不陌生,也曾用不同语言分别实现过,但都是利用“栈”实现的相关功能,对于这一问题的递归实现我还是第一次尝试。两种实现方式各有优劣,这里不再展开。 程序总体结构图如下: 词法分析的作用是将字符序列转换为单词(Token),本次实验中体现在读取整数功能 ...
分类:
其他好文 时间:
2017-10-28 18:59:43
阅读次数:
222
http://blog.csdn.net/it_dream_er/article/details/53612006 短语:一个句型的语法树中任一子树叶结点所组成的符号串都是该句型的短语。 直接短语:如果子树中不再包含其他的子树,即A只能推导出b,而b不能再推出其他的式子,则b为此句型的直接短语。 句 ...
分类:
其他好文 时间:
2017-10-15 22:36:23
阅读次数:
212
本次结对编程我的搭档是冉华同学,在这次结对编程的过程中我收获良多,之前我拿到题目后非常焦急,因为发现功能一就需要用到逆波兰表达式,但是之前编译原理学习的相关知识已经忘了,而且接触c#的时间也不过3个星期,感到一头雾水无从下手。然而冉华告诉我,拿到题目之后最好不要直接就开始写,因为心里没有一个完成计划 ...
分类:
其他好文 时间:
2017-10-11 10:52:54
阅读次数:
165
如果你翘累了代码,想喝喝咖啡,顺便看点儿可以当佐料的文章那本文应该比较适合现在的你。(?????)? ?? 我们一天天都在和代码打交道,但是你了解代码的运行原理么?为什么你的一行代码就能被执行出五花八门的效果嘞? 其实代码这玩意儿就是一门语言。是的,你可以看成和中文、英文等语言平等的存在。是语言就得 ...
分类:
其他好文 时间:
2017-10-06 15:55:26
阅读次数:
127
1. C#中的几种后缀名含义: .Sln //解决方案文件→.csproj //项目文件→.cs //类文件。他们是层层包含的关系。 2. 命名空间: 命名空间是.NET中提供 应用程序代码容器的方式,他是一个容器。这样就可以唯一地标识代码及其内容; 在C#中,创建命名空间的关键字是 namespa ...
程序设计语言是向人们以及计算机描述计算过程的记号。 在计算机上运行的所有软件都是用某种程序设计语言编写的。 在程序可以运行之前,首先需要被翻译成一种能够被计算机执行的形式。 完成这项翻译工作的软件系统成为编译器(compiler). 1.语言处理器: 简单的说,一个编译器就是一个程序,它可以阅读以某 ...
分类:
其他好文 时间:
2017-10-02 23:52:22
阅读次数:
458
今天不看spring了,上了一天的课,晚上还要写编译原理作业(头疼)。先看点api的源码放松一下。不得不说,看这些世界上最顶尖的程序员写出来的东西真是和看nba一样是一件愉快的事情,虽然有点烧脑。 先看看Integer.toString(int i)是怎么实现的。 首先有两个相关的方法,string ...
分类:
编程语言 时间:
2017-09-28 20:43:30
阅读次数:
181
编译原理 第一章 引论 1.1 练习 1.编译器和解释器之间的区别是什么? 首先,编译器是一个软件系统或者说是一个程序,解释器是语言处理器。其次,编译器是把程序翻译成能被计算机执行的形式并报告翻译过程中发现的源程序的错误,解释器是直接利用用户提供的输入执行源程序中指定的操作。 2.编译器相对于解释器 ...
分类:
其他好文 时间:
2017-09-17 13:47:27
阅读次数:
188
1.1 编译原理 传统编译步骤 分词/词法分析(拆分成一个个词法单元)——>解析/语法分析(词法单元流转化为抽象语法树)——>代码生成(将抽象语法书(AST)转化为可执行代码(机器指令)) js引擎比上述要复杂,在各个阶段会有特定步骤来对性能进行优化,比如冗余元素。 其他很多语言的编译多发生在构建之 ...
分类:
其他好文 时间:
2017-09-11 22:44:17
阅读次数:
85
从左向右扫描输入,然后产生最左推导(就是每次都把最左边的非终结字符用产生式代替)。 (一)First集合 比如有产生式 A-> + T | - P , 当我们读到串为 +开头的时候,我们可以很直接地判断选择 A-> + T 这个生成式;串为- 开头的时候,选择 A-> - P 这个生成式。但如果文法 ...
分类:
其他好文 时间:
2017-08-25 12:25:35
阅读次数:
142