编译原理简单梳理

本文概述了编译原理的基础知识,包括程序设计语言的分类、翻译方式、编译过程的各个阶段,如词法分析、语法分析和语义分析。还介绍了形式文法、自动机的概念以及词法分析和语法分析的方法。此外,讨论了中间代码生成、代码优化和符号表管理,并简要提及了编译器构造中的关键技术和工具。
摘要由CSDN通过智能技术生成

这几天来在复习编译原理,下面进行一个浅浅总结,加深一下印象并且方便后面查看复习。

程序设计语言

1.机器语言 2.汇编语言 3.高级语言

翻译方式

编译程序,输入源程序在编译程序(编译器)转化下,转化目标语言,后再目标语言输入,输出。

解释程序,源程序输入,在解释程序下直接输出。

编译过程

源程序-->词法分析-->语法分析-->语义分析-->

中间代码生成-->代码优化-->目标代码生成-->目标程序

形式文法和语言

符号串,逆,前缀,幂,闭包

文法

一个四元组:G[S]=(VN,VT,P,S) 非终结符,终结符,规则,开始符

推导符号,句型,句子,语言集合L(G)

形式文法

0型文法:每一个产生式\alpha ->\beta\alpha \epsilon V*且至少包含一个非终结符,\beta \varepsilon V*

相当于一个图灵机,和上下文无关,递归可枚举

1型文法(上下文有关)\alpha ->\beta满足\left | \beta \right |\geq \left | \alpha \right |,S->ε除外

2型文法(上下文无关)\alpha ->\beta\alpha非终结符,\beta\epsilonV*

右线性文法:A->aB或者A->a形式

左线性文法:A->Ba或者A->a形式

正规文法:左线性和右线性统称

正规文法,正规式

最左推导,最右推导(也称规范推导,推出句型称规范句型)

短语 直接短语 句柄(最左直接短语)

自动机

DFA 确定的有穷自动机     

初态唯一,K*输入符号->K一个映射 

NFA 不确定的有穷自动机  初态非空集合不唯一,K*输入符号->2^{k}

确定化

子集构造法 分割子集

最小化

消除等价状态

正规式与正规文法与有穷自动机

构造NFA后进行确定化和最小化

词法分析

识别单词符号,输出<词法单元名,属性值>

单词符号:标识符,常数,关键字(基本字/保留字),运算符(+,-,*等),界符(逗号,分号,括号等 )

识别空格,识别单词符号

确定的自顶向下语法分析

LL(1)文法

First集合,Follow集合,Select集合

分析方法:预测分析法,递归子程序法

LL(1)条件:相同左部Select集合不相交    Select(A->aB),Select(A->b)相交为空

预测分析表,基于select集合整合信息分析的依据。

非LL1文法:消除左递归和提取左公因式转换LL1文法

自下向上优先分析

简单优先分析

优先规则

算符优先分析 Firstvt Lastvt集合

LR分析

LR(0)分析   项目集合规范族 没有移进,规约冲突 规约规约冲突

SLR(1) 解决了部分 移进,规约冲突

LR(1)多加入first集合信息,解决冲突

LALR(1)合并LR(1)同心集合

中间代码生成

属性文法A=(G,V,F)

继承属性(沿着树向上传播)  综合属性(向下)

非终结符都可能,开始符号没有继承属性,只有综合属性,终结符只有综合属性

中间代码形式

逆波兰式子

三元式(OP,ARG1,ARG2)

四元式(三元式,RET)

代码优化

基本块 语句入口到下一入口(不包括下一入口),转移语句(包括),停止语句(包括)

局部优化,全局优化,循环优化

符号表 运行时存储

好的先丢这里吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值