编译原理
seen_in_hw
希望我能变厉害!!!成为大师!!!我放弃了很多看似很炫的技术而去探寻技术的本质,技术是用来提供服务的,所有的技术都离不开思想,而思想是最难掌握的,我们应该把更多的精力放在对于思想的探寻上
展开
-
编译原理的归约和推导
首先,要明白两个概念什么是文法,什么是字符 举个例子: 文法已经给出,下面的那个输入就是字符我们规定: 文法 到 字符 称为 推导 字符 到 文法 称为 归约那么最右推导称为规范推导,最左归约称为规范归约 = =挺好懂的,不知道你懂了没有~原创 2015-11-06 11:30:10 · 12162 阅读 · 1 评论 -
【编译原理】:NFA转变为DFA的子集构造法
整体的步骤是三步: 一,先把正规式转换为NFA(非确定有穷自动机), 二,在把NFA通过“子集构造法”转化为DFA, 三,在把DFA通过“分割法”进行最小化。一步很简单,就是反复运用下图的规则,图1 这样就能转换到NFA了。 给出一个例题,来自Google book。本文主要根据这个例题来讲,图2 二.子集构造法。 同样的例题,把转换好的NFA确定原创 2015-12-25 13:33:58 · 46109 阅读 · 30 评论 -
【编译原理】:如何将控制语句翻译成四元式
如图: 解决这个问题的方法是: 翻译成三元式(逻辑就能翻译) 三元式转换为四元式 四元式结果 Op arg1 arg2 存储变量知道这个思路之后,我们就能够很快的做出这道题了原创 2015-12-24 16:24:56 · 24152 阅读 · 4 评论 -
【编译原理】:编译原理大题
1,属性文法中文法符号的两种属性分别成为 继承属性 和 综合属性2,符号表的每一项是由 名字栏 + 地址分配 两个栏目 组成3,一个大题: 有穷自动机M接受字母表={0,1}上所有满足下述条件的串:每个1都有0直接跟在右边。构造一个最小的DFA M及和M等价的正规式。 等价的正规式真的写的好,还要注意0是可以无限循环的,这里规则很多,估计要考虑很多情况才能完全掌握 - -原创 2015-12-23 14:01:39 · 2808 阅读 · 0 评论 -
【编译原理】:编译原理各种文法对应的自动机
如题: 四种文法 0 图灵机 1 线性界限自动机 2 下推自动机 3 有穷自动机这个可能是编译原理考试的时候会考选择题的,我这里四种自动机都没有搞清楚,这里就先打个问号吧- -以后好好想原创 2015-12-23 13:38:22 · 1571 阅读 · 0 评论 -
【编译原理】:编译原理期末复习1
1,关于文法 一个文法G可以抽象的分为四元组(VN,VT,P,S) VN表示非终结符 VT表示终结符 P表示产生式 S表示开始符2,老师上课说的编译原理的阶段说的是:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成 其中 语法分析,语义分析,中间代码生成称为 语法制导翻译 语义分析,中间代码生成称为 语义翻译3,乔姆斯基创造了文法,克林创造了自动机,其实这两种东西是等价的4原创 2015-12-21 15:06:08 · 5507 阅读 · 0 评论 -
【编译原理】:如何通过正规式写DFA
这篇文章就是解决一个问题: 通过正规式写DFA 利用的规则如下,详见例题即可 写出下面三个字符串的DFA: 规则: 1,某个字符的闭包就给自己打个箭头 2,某个字符只用一次直接箭头过去 3,选择性的闭包就把待选的字符都放在箭头上面原创 2015-12-23 13:13:54 · 10196 阅读 · 4 评论 -
【AC自动机】:Aho-Corasick算法的实现
1、概述Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。好了,我们先看下最原始的多模式匹配算法:主串T,n=strlen(T)。模式串Pi mi = strlen(p转载 2015-11-28 19:38:06 · 842 阅读 · 0 评论 -
【读书笔记】:哈工大软件学院编译原理期末考试复习概要
老师最后一堂课讲的一些考与不考的记录吧,各位大神好好体会 - -感觉好好学习才能考过啊 - -正文:// 编译原理考试今年没有简答题// 语言和文法 选择填空和判断 // 词法分析小题// 语法分析LR1 LL1 必考,并且是大题// 语义分析 大题,给出某语言的控制语句,可能考讲义上的,有变化,不是能一下想出答案的// 中间代码生成 源程序片段,写其三地址指令序列,按照教材和讲义上的写原创 2015-11-27 17:26:32 · 2600 阅读 · 0 评论 -
【编译原理】:哈工大编译原理课程内容记录
//// 第二章语言,文法,上下文无关法//// 串上的运算 xy = string x + string y//// 字符串A的正闭包 不含0次方幂 字符串A的闭包(又称克林闭包) 含0次方幂 0次方幂有个特殊的符号~//// 文法的类型 第一种上下文有关 (CSG context-sensitive grammer) 第二种上下文无关 (CSG con原创 2015-09-23 00:26:47 · 992 阅读 · 0 评论 -
如何求first集与follow集
最近马上要步入考试周了,编译原理的这个Follow集一直令我头大啊,今天百度了下下,找到一篇文章,看了以后我瞬间就明白了如何求解Follow集~~哈哈,如果你也不知道如何求解Follow集,请看看下面的这篇日志吧 ,其实我发现,对于Follow集,我一开始不理解的地方就在那个Vn能推出ε的时候,就需要再往后考虑一个字符:)文法:S→ABc A→a|ε B→b|ε First集合求法: 能 由转载 2015-11-10 01:01:22 · 4311 阅读 · 0 评论 -
【经典算法】:关于中文在计算机存储格式的算法实现
knowledge首先要知道一些背景知识 一个字符在计算机里面使用0-255的数值表示的比如说:cout<<(int)u; 这样就能得到u的数值而中文在计算机里面是由两位负数表示的比如说 “我”这个字在计算机里面就是 -50 -46 两位数值表示的 给个代码测试一下:#include <iostream>#include <string>using namespace std;int原创 2015-09-20 16:13:06 · 745 阅读 · 0 评论 -
【编译原理】:简易的词法分析器
用途这个代码简单模拟了编译原理课上的词法分析器。词法分析器完成了 如下功能:输入一串代码: 例如 int a ; a = 3 ; 词法分析器会把各个元素给分离出来这就是词法分析器的功能实现方法通过从文件读入代码。然后程序进行自动分离单个词元素代码#include <iostream>#include <fstream>#i原创 2015-10-09 12:56:46 · 914 阅读 · 0 评论 -
带Mingw的code:blocks的安装指南
步骤1,下载带mingW的code:blocks,给出地址: 带mingw的codeblocks或者自己百度带mingW的code:blocks,然后下载即可2,设置code:blocks的编译器的位置,默认为C盘,你的安装位置不一定对,所以要设置一下编译器位置 在主菜单点击settings>compiler and debugger、假使你使用了MingGW带的编译器、那么这个编译器便是GNU原创 2015-09-20 10:44:40 · 1866 阅读 · 0 评论 -
【数据结构与算法】:倒数第K个数
这个题很简单,倒数第K个数,先顺序遍历一边,找出链表中一共有多少个数(假设为Num个),然后再次遍历,其中第num-k个数就是要找的两函数如下:int GetLength(struct node *head){ int count = 0; struct node *temp = head; while(temp!=NULL){ count++;原创 2016-07-24 21:57:50 · 546 阅读 · 0 评论