编译原理

  1. 编译执行和解释执行的区别
    把计算机高级语言编写的程序(源程序)翻译成该计算机的汇编语言或机器语言书写的程序(目标程序)的计算机程序称为编译器编译程序
    解释程序是和编译器类似的一种语言翻译程序,与编译器的不同之处在于它以源程序为输入,在执行过程中不产生目标程序,而是边解释边执行。边解释边执行工作效率低,可能需要重复翻译和执行语句,经常用于执行命令语言和交互式会话语言。
  2. 词法分析程序
    词法分析程序是逐个读入源程序的字符并按照构词规则切分成一系列单词(token)。
  • 正则表达式
    用特定的运算符及运算对象按规则构造的表达式,每个正则表达式匹配一个字符串集合。
  • 确定性有穷自动机


    image.png
  • 非确定性有穷自动机
    有穷自动机在一个状态上,对于某个输入符号,存在不止一种转换,称该有穷自动机为不确定性有穷自动机。
  • 正则表达式是一种描述单词的工具,可以根据正规式构造等价的DFA,而DFA描述单词被识别的过程,可以根据DFA构造词法分析程序。


    image.png
  1. 语法分析程序
    语法分析程序以词法分析程序输出的单词序列作为输入,分析源程序的语法结构,并可以确定单词序列中违反语法结构规则的错误。语法分析的结果一般表示为分析树或语法树。
    在保证语义信息不丢失的情况下,去掉语法分析树的冗余节点形成抽象语法树。多个终结符都可提到根节点上。
  • 上下文无关文法又称为2型文法,是语法结构描述的标准方式


    image.png
  • 推导和规约
    推导:从开始符号S开始,逐步用产生式右部替换左部
    规约:从表达式开始,逐步用产生式左部替换右部
  • 句子和句型
    句子是句型,开始符号S是句型,由终结符构成的字符串是句子


    image.png
  • 最左推导和最右推导
    最左推导:每一次直接推导都是用字符串中最左边的非终结符对应的产生式规则进行推导
    同理有最右推导,最右推导也称规范推导,由最右推导所得的句型称为规范句型
  • 自上而下的语法分析程序
    已知文法G[S], 对任意输入串w, 若从文法的开始符号S出发,能为w构造一个最左推导,则w是一个合法的句子,否则w有语法错误。该算法自上而下的为w的分析结果建立一棵语法树。
    • 递归下降分析
      该方法执行一组递归函数判断输入的单词序列是否符合语法规则。为每个产生式规则撰写一个函数,终结符匹配,非终结符调用其所在产生式对应的函数。
    • LL(1)分析:只走一条唯一可能成功的道路
      L:从左向右处理输入
      L:为输入串找出一个最左推导
      1:使用输入单词序列中的一个单词预测分析
      构造LL(1)分析表的步骤:
      1)求First集合
      2)求Follow集合
      3)构造LL(1)分析表
      M[N,T]表示当前分析栈的栈顶符号为N, 而当前词法分析的输入单词为T时,查看LL(1)分析表应该按照哪个产生式进行推导。
  • 自下而上的语法分析
    从输入单词序列开始,自左至右逐步进行规约,试图将其规约为文法的开始符号。从左到右规约对应的逆过程为最右推导(规范推导),故称之为规范规约。
    自下而上的语法分析工作的每一步,都是从当前串中选择一个子串,将它规约到某个非终结符。
    句柄:最左边的可规约的子串
    活前缀:包含句柄以及句柄之前的所有前缀
    可归前缀:包含句柄的前缀,也就是最长活前缀
    LR(k)分析是一种有效的自下而上的语法分析技术,它能适用于大部分上下文无关文法的分析。
    L:自左向右分析输入单词序列
    R:分析过程都是构造最右推导的逆过程(规范规约)
    k:在当前分析动作时向右看的单词个数
    • LR(0):只要当前可规约就规约,不看后面的字符
    • SLR(1): 仅在发生冲突时才向右看一个符号,从而确定该采取什么动作
    • LR(1): 在LR(0)项目中放置一个向右搜索符号 [A->a., b]
  1. 语义分析程序
    语义分析是在语法分析程序确定出语法短语后,审查有无语义错误,并为代码生成阶段收集符号属性信息。如形参和实参不匹配,类型检查,数组下标是否为整数等。
    程序设计语言的语义分为静态语义和动态语义:
    静态语义:在编译阶段能够检查的语义
    动态语义:在目标程序运行阶段能够检查的语义
  • 语义分析的任务
    计算各类语法成分的语义信息(属性信息),一般将收集的语义信息存放到相应的信息表中。在编译程序中符号表是用来存放源程序中标识符相关属性信息的一种信息表
  • 属性文法的作用
    根据已求得的各产生式的语义规则,计算任意句子推导过程中各文法符号(终结符或非终结符)对应的属性值,根据属性值进行相关语义分析。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容