编译原理笔记(6) 引入中间代码的作用 使编译程序在结构上更清晰(前端、后端) 便于进行代码优化 便于移植 后缀式 后缀式不使用括号,只要知道运算符的数目,无论是从左端还是右端扫描,都可以对齐进行无歧义的分解 表达式向后缀式的翻译 有向无环图(DAG) 内部结点代表运算符 公共表达式会有多个父节点(即该表达式参与了多个运算) DAG的生成方式 首先画出产生式的语法树 对语法树的重 2020-05-02 笔记 #编译原理
编译原理笔记(5) 自下而上的语法分析 从输入串开始逐步进行归约,直到文法的开始符号 归约:根据产生式规则,把产生式的右部替换成左部符号 从语法树的叶子节点开始进行构造语法树 LR 分析法、算符优先分析法 自下而上的语法分析需要注意的部分 核心为识别可归约串 分析树和语法树可能不同 短语 如果文法的开始符号 S 可以推出一个句型,句型中一个非终结符 A,可以经过至少一步推出字符序列 b 2020-04-12 笔记 #编译原理
谱聚类再探 首先查阅相关的资料,比较谱聚类算法与传统的聚类算法K-mean的区别。 K-mean K-mean实现: 确定K值,随机选取K个点 以这K个点为中心质点,对原始数据集中中的每个点分别计算离哪个中心点更近 计算结束就将原始数据集分为K个类,对K个类重新计算中心质点(平均值法) 若全部K类新计算出的中心质点与该类上一个中心质点的距离小于一个阈值,则认为聚类操作已经收敛了,聚类结束 否则重复步骤2- 2020-03-20 笔记 #Python #算法
编译原理笔记(3) 第三章 词素、词法单元、模式 词素:根据源程序的字符序列中与某个模式匹配的子序列,可以用正规集来理解。 词法单元:根据识别出的词素形成词法分析的输出,格式为 <token-name , attribute-value> 模式:描述词素可能具有的形式,可以用正规式来理解。 词法分析器的作用 根据源程序输入的字符流,将他们组成词素,进而输出词法单元序列。 词法 2020-03-19 笔记 #编译原理
最小生成树 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。 输出格式: 输出村村通需要的最低成本。如果输入数据不足以保 2020-03-15 笔记 #算法 #C++
编译原理笔记(2) 第二章 程序语言的定义 语言的定义是语言实现的基础。 程序语言由两方面定义:语法规则和语义规则。 语法:一组规则,用它可以产生一个合式(well-formed)的程序。 语义:语言成分的含义,由程序的执行效果来说明。 语言的分类: 第一代语言(机器语言) 第二代语言(汇编语言) 第三代语言(高级语言) 命令式(c++) 功能式(Haskell) 说明式(Prolog) 第四代语 2020-03-13 笔记 #编译原理
关键路径 这是由BBfat推荐给我的一道经典面试题: 输入一个整数,求将其转换为二进制后,该二进制中数字1的个数。 解法1 这是一种比较容易想的方法: 123456789101112131415161718#include <iostream>using namespace std;int main(){ int num, count; count = 0; ci 2020-03-12 笔记 #算法 #C++
编译原理笔记(1) 第一章 编译程序与解释程序 编辑器将源语言程序转换成目标语言程序,转换前后的两种程序在逻辑上是等价的。源语言不一定是高级语言程序,目标程序也不一定是低级语言程序。例如:汇编器的别名就是汇编语言编译器。再如:历史上存在过一种编译器将C++编译为C。 解释器则是将将源程序和输入一同输入解释器,解释器一行一行按照输入执行程序,产生输出。 编译程序生成的目标程序在执行时比解释器执行得快;但解释程序错 2020-03-12 笔记 #编译原理
模板题——连续子序列和的最大值 题目: 给定一个长度为 n 的整形数组 nums,求从数组索引 l 至 索引 r 的整数序列中,连续序列和的最大值为多少。 思路: 本题的主要思路,可分为两种 使用遍历的思想,遍历出序列的每种情况,逐一求和,计算最大值 但这种思路及其耗费时间,不可取。 使用动态规划的思想,使用一个数组 dp 记录,从索引 l 起包含位置 k 连续序列和的最大值 (l<=k<=r),最大值可由 2020-03-04 笔记 #算法 #C++
闲来无事 2020年的寒假一转眼就只剩2天时间,按理这个时候我应该已经踏上了返京的路途,但一切不都得从一只蝙蝠说起嘛,全国人民都被迫放了一个长假。 这个假期我算不上荒废也不敢说是充分利用,更多是在一种矛盾的心态中度过,是一种伴随着焦虑与期待、得过且过与不甘心的心态。一时觉得自己应该努力呀,一时又觉得自己需要休息。 值得高兴的是,昨天一直让我担心的事情“CET6”终于公布了成绩,我顺利通过了。算是又顺利过了一 2020-02-20 日记 #日记