接下来具体看推导过程... 这是对于表达式 3 + 4 * 5 的推导 ... (其实对于上图我是存在一定疑惑的, 程序从什么时候开始从非终结符到终结符的替换 ? 就是说为什么第一步能E*E, 判断E+E我可以认为是它发现3后面有个 '+', 但是判断 E * E 难道它是从左边开始看的 ? 也有另 ...
分类:
其他好文 时间:
2016-05-13 08:11:13
阅读次数:
86
以下答案仅供参考,有错欢迎留言。 Chapter 7: Lighting...
分类:
其他好文 时间:
2016-05-13 04:40:36
阅读次数:
244
先来看看上下文无关文法, 总的来说上下文无关文法的定义如图 : BNF范式(Backus-Naur Form)经常用来表示上下文无关文法... 接下来提出一个概念叫推导 : 推导有两种, 最左推倒和最右推倒 : 那么其实词法分析的目的就可以用这个上面我们所提到的上下文无关文法来描述了 : 下面是一道 ...
分类:
其他好文 时间:
2016-05-12 01:26:46
阅读次数:
355
首先我们来分析一下语法分析器的任务 : 将由词法分析器返回的Tokens(记号流)经过检查和处理生成根据规定的语法规则来生成抽象语法树... 最终大概是这样 (两个输入 一个输出): 然后是语法树, 大概是这样 : 那么接下来看看在这一阶段所需要学习的内容 : 大概就是这样... ...
分类:
其他好文 时间:
2016-05-11 23:20:14
阅读次数:
159
今天撸了一个晚上终于完成了, 感觉还是要说一下体会吧... 其实之前课程本身已经提供了相关的算法伪代码, 那么在思路上应该没有问题, 那么最后我却用了一个晚上才完成最后的hopcroft 算法呢... 其实难点在于数据结构的运用, 这边图论算法熟悉的话应该会感觉轻松一些...(不幸的是我还没有系统的 ...
分类:
其他好文 时间:
2016-05-11 01:14:29
阅读次数:
167
今天AI考的还算顺利, 没有不会做的, 目前也没发现错的, 在这里顺便也谈谈AI吧, 我之所以不选AI, 总感觉理论性太强, 学起来不来劲, 经历了大二这一个学期的理论学习, 这AI简直是神课啊, 真是怕了, 大三到英国肯定不选AI... 其实就算在今天下午在考试我也是一直惦记着我的词法生成器... ...
分类:
其他好文 时间:
2016-05-10 02:13:13
阅读次数:
228
1.龙书(Dragon book)书名是Compilers: Principles,Techniques,and Tools作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman国内所有的编译原理教材都是抄的它的,而且只是抄了最简单的前端的一些内容。龙书中文版第一版 ...
分类:
其他好文 时间:
2016-05-10 02:07:02
阅读次数:
780
最后是一个小作业 : 给定如下的正则表达式 (a|b)((c|d)*),请完成如下练习: (1)使用Thompson算法,将该正则表达式转换成非确定状态有限自动机(NFA); (2)使用子集构造算法,将该上述的非确定有限状态自动机(NFA)转换成确定状态有限自动机(DFA); (3)使用Hopcro ...
分类:
其他好文 时间:
2016-05-07 06:34:48
阅读次数:
448
最后是最小化算法, 它的目的其实在于通过合并的方式, 减少状态数, 然后使得最终生成的代码中用来表示状态转移的数据结构尽量小, 以此节约空间和时间. DFA中运用最广泛的算法是hopcroft算法, 接下来就是对该算法的简要介绍... 这个算法的第一步是将所有的状态(也就是代码中的nodes) 划分 ...
分类:
其他好文 时间:
2016-05-07 01:00:43
阅读次数:
114
接下来的步骤就是从NFA转换为DFA...首先要思考的第一个问题是为什么要从NFA转换到DFA, 那么我们可以先来看看他们的区别, 通俗来讲, NFA就是说给定一个输入的字符, 可以有多种状态可以选择, 而DFA的话, 就只有一种状态可以选择... 由这里就可以发现, 其实DFA在代码的实现难度上是 ...
分类:
其他好文 时间:
2016-05-07 00:46:59
阅读次数:
268