上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
  2016年5月28日
摘要: 生成了抽象语法树, 接着就来进行语义分析...语义分析的任务如下图: 一个比较简单的类型检查算法可以是这样的 : 加上id之后可以是这样的: 这里就引出了符号表的概念 : 同时符号表还应该满足程序中作用域的概念, 实现作用域的方法如下: 同时符号表还应该解决名字空间的问题, 可以看到图中多次出现li 阅读全文
posted @ 2016-05-28 12:38 内脏坏了 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 接着上节讲, 我们来看如何在分析中插入合适的代码来生成语法树... 对于抽象语法树的总结 : 下面是作业 : 【抽象语法树】 在这个题目中,你将完整的实现抽象语法树(包括数据结构的定义、语法树的生成等)。首先,请下载我们提供的代码包: http://staff.ustc.edu.cn/~bjhua/ 阅读全文
posted @ 2016-05-28 00:40 内脏坏了 阅读(385) 评论(0) 推荐(0) 编辑
  2016年5月27日
摘要: 从分析树到语法树...什么意思呢, 就说这个图中其实很多节点是多余的, 比如左右括号, 还有从E到3其实可以直接由3代替E等等, 因为到了分析树这一阶段, 其实优先级结合性都已经由树的结构简介的体现出来了, 所以用于表示优先级结合性的括号, 以及分析过程中冗余的结构(3和4 上面的E)都不必要... 阅读全文
posted @ 2016-05-27 21:37 内脏坏了 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 完成了语法分析, 那么这一阶段最后要讨论的就是如何生成抽象语法树了...这一阶段称之为语法翻译 : 那么我们来看看翻译的基本思想 : 其实现如下 : 下面是具体实例 : 阅读全文
posted @ 2016-05-27 20:47 内脏坏了 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 接下来是这一节的习题 : 在这个题目中,你将实现一个简单的台式计算器。这个台式计算器的功能像在最后一个讲义中演示的例子一样:即用户可以在控制台上交互输入算术表达式,你的程序判断该表达式是否合法,不合法的话报错并退出运行。 你的程序涉及表达式的部分要支持如下的表达式: E -> n | E + E | 阅读全文
posted @ 2016-05-27 20:01 内脏坏了 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 到这里词法分析模块就接近尾声了, 下面对词法分析模块进行总结 : 递归下降本质上也算是自顶向下的分析算法, 适合手工编码, 它相对来说更加灵活, 能够对于特定的DSL进行更加灵活的处理优化, 但是相对来说比较慢.而自动生成器则恰好相反, 接下来是一个LR(1)语法生成器的实例 -- YACC. 首先 阅读全文
posted @ 2016-05-27 17:31 内脏坏了 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 上一节讲完了SLR(LL(0)改进算法)的由来, 我们来大致分析一下该算法的基本思想... 具体我们可以再来看一个冲突... 可以看到状态2中, 既可以移进也可以归约, 同时由于R的follow集中也存在=(R可以是L, L后面可以是=), 所以两种情况都无法避免... 为了解决这个冲突, 我们引出 阅读全文
posted @ 2016-05-27 13:41 内脏坏了 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 最后我们来分析一下这个所谓的LR(0)分析算法... 图中第二个L应该是R, 然后所谓的0个前看符号我确实不太能够理解, 据说要和lr(1)比较了才知道, 接下来研究它的缺点(说实话感觉能分析的文法有限这不是ll(1)的缺点吗? 不说说lr类算法没有这类缺点吗? ) 接下来就是具体的错误分析实例了. 阅读全文
posted @ 2016-05-27 12:25 内脏坏了 阅读(163) 评论(0) 推荐(0) 编辑
  2016年5月22日
摘要: 那么最后我就来看看这个所谓的lr(0)分析表生成算法 : 这个算法乍一看好像又和前面脱节了, 但是如果仔细看之前的讲解, 比如下图, 仔细比较, 感受一下 ... 你会发现 : 每次产生的D其实就相当于是一个新的状态, 那么再看一下closure 和 goto的具体实现 : 不难发现closure其 阅读全文
posted @ 2016-05-22 22:48 内脏坏了 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 下面来具体看一下这个算法(这边可能会有点跳跃, 但是仔细看的话还是能看出来之间的联系的) : 上面已经说了, 这个算法的核心思想就是移进和归约, 移进可以看出是图中自动机的状态转化过程, 但这里的转化并不需要弹出任何字符, 只需要讲状态与字符可以得到的新状态压入即可, 每一个状态都是一个推导式, 之 阅读全文
posted @ 2016-05-22 22:08 内脏坏了 阅读(287) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页