美文网首页
【Note】Compiler

【Note】Compiler

作者: Yaso | 来源:发表于2019-04-08 16:05 被阅读0次

一些编译相关知识,在此mark一下

编译步骤

预编译
编译
链接
装载

词法分析:

扫描器 解析器:有限自动机构成

解析方式:表驱动解析 硬编码解析(常用)

产生:词法记号(Token)

分为:标识符 关键字 常量 界符 err end

语法分析: (1)(2)表示提前看多少个标记 lookahead

LL:自上而下 递归下降子程序 (1)不容许出现左递归 gcc 使用LL(2)

LR:自下而上 (合并终结符)

终结符:词法记号(Token)

非终结符:将词法记号序列抽象出来 用符号来表示 此符号为非终结符

文法:0,1,2(正则文法:例有限自动机),3(上下文无关文法)型

BNF :巴科斯范式 - 一种表示上下文无关文法的语言 上下文无关文法描述一类形式语言

BNF 规定是推导规则(产生式)的集合,写为:

<符号> ::= <使用符号的表达式>

产生式:非终结符->终结符 非终结符 | 终结符

So 高级程序语言语法解析过程就是将其逐步用相应产生式(推导规则)拆分的过程

左递归消除规则:

S->Sa | b

引入新的非终结符号S`

S-> bS=> bS = abS` | b 同时消b =>

S-> aS | ε

program = program segment | ε 消除左递归 =>

program = segment program | ε

program = ε program=> program = program

program= segment program | ε

语法分析 : 递归下降子程序

一个program 经语法分析 输出的是抽象语法树 每个子节点都是相应的语法块 对应相应的子程序 输出保存到文件里面 也可以直接进行符号表管理 语义分析 代码生成 —>语法制导

语义分析:声明和定义检查 类型转换

相关文章

网友评论

      本文标题:【Note】Compiler

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