美文网首页
编译原理基础知识汇总

编译原理基础知识汇总

作者: will2yang | 来源:发表于2019-10-03 11:32 被阅读0次

前端: 词法分析 -> 语法分析 -> 语义分析
后端: 生成中间代码 -> 优化 -> 生产目标代码

词法分析:有限自动机
语法分析:构建抽象语法书(AST),递归下降算法
语义分析:

  • 数据类型不匹配,是否做自动转换。
  • 相同名称的变量,作用域的处理。
  • 变量名重复检查

表达式:左递归、优先级、结合性
上下文无关文法:无论在任何情况下,文法的推到规则都是一样的。
递归下降算法:算法分为自顶向下、自底向上,显而易见递归下降算法就是自顶向下。
非终结符(non-terminal) 产生式(Production Rule) 推导(Derivation)

解决左递归产生的死循环问题:虽然解决了左递归产生的死循环,但是结合性出错了。

巴克斯范式、扩展巴克斯范式

add -> mul(+mul)*

上下文无关文法包含了正则文法。

  • 保证运算符的优先级。
  • 确保正确的结合性。
    注:阅读语法规则文件,熟悉语言的规则

消除左递归

add -> mul add'
add' -> + mul add'|ε
add -> mul(+mul)*

尾递归(函数的最后一句递归调用自身)。
尾递归 -> 循环调用(减少系统资源的开销)。

  • 优先级越低越先尝试推导。
  • 结合性由左递归和右递归产生(左递归 -> 左结合,右递归 -> 右结合)
  • 改写语法规则避免左递归。
    回溯:尝试不成功后恢复原样
    REPL (read-eval-print loop)。

相关文章

  • 编译原理基础知识汇总

    前端: 词法分析 -> 语法分析 -> 语义分析后端: 生成中间代码 -> 优化 -> 生产目标代码 词法分析:有...

  • 基础知识

    html5特性汇总ES6入门webpack编译的原理

  • 高级面试题

    170+道钉钉前端扫盲知识点 基础知识 基础知识主要包含以下几个方面: 基础:计算机原理、编译原理、数据结构、算法...

  • 我的测试工程师笔记01

    首先,需要有宽泛的计算机基础知识,包括:数据结构(√)微机原理(×)数据库(×)操作系统原理(×)编译原理(×)逻...

  • 编译原理知识汇总

    编译原理 第一章 引言 1.从面向机器的语言到面向人类的语言 汇编指令:用符号表示的指令被称为汇编指令汇编语言:汇...

  • iOS高级进阶

    基础知识 数据结构 操作系统 编译原理 Python语言 HTTP 工具 Charles (HTTP/HTTPS)...

  • iOS-底层原理 10:strong©&weak底层分析

    iOS 底层原理 文章汇总 在clang编译的cpp文件中可以发现 strong & copy & weak 修饰...

  • OC底层知识(四) :Category有关面试题

    分类的基础知识可以看这篇Category博客1、Category的实现原理或者本质 ? Category编译之后的...

  • 第三章 程序语言和语言处理程序基础知识

    一、概述 1、汇编、编译、解释系统的基础知识和基本工作原理。 2、程序设计语言...

  • 深入浅出iOS编译

    前言 两年前曾经写过一篇关于编译的文章《iOS编译过程的原理和应用》,这篇文章介绍了iOS编译相关基础知识和简单应...

网友评论

      本文标题:编译原理基础知识汇总

      本文链接:https://www.haomeiwen.com/subject/goddpctx.html