文档介绍:第四章语法分析—自上而下分析
编译原理
本章主要内容
本章主要介绍语法分析的处理
语法分析的任务
自顶向下分析法
四元式
单词符号
语法单位
四元式
目标代码
词法分析器
语法分析器
语义分析与中间代码生成器
优化段
源程序
表
格
管
理
出
错
处
理
目标代码生成器
语法分析的任务
语法分析程序以单词串形式的源程序作为输入或分析的对象。
它的基本任务是:
根据语言的语法规则,分析源程序的语法结构,即分析如何由这些单词组成各种语法范畴(如下标变量、各种表达式、各种语句、程序段或分程序,乃至整个源程序等等),并在分析过程中,对源程序进行语法检查。
作为语法分析程序的输出,可以有多种不同的形式。在下面的讨论中,为简便起见,我们假定语法分析程序的输出,是用某种方法表示的语法树
语法分析
如何精确描述和刻画语言中的基本语法成分--如表达式、语句和函数?
如何识别语法成分及语法错误并执行某些相关的处理动作?
什么是语言
自然语言(Natural Language)
是人与人的通讯工具
语义(Semantics):环境、背景知识、语气、二义性——难以形式化
puter Language)
计算机系统间、人机间通讯工具
严格的语法(Grammar)、语义(Semantics) ——易于形式化:严格
语言是用来交换信息的工具——功能性描述
什么是语言
语言
单词(Token):满足一定规则字符(Character)串
句子(Sentence):满足一定规则单词序列
语言(Language):满足一定条件的句子集合
语言是字和组合字的规则——结构性描述
例:去吃我们中汉堡午
中午我们去吃汉堡
如何描述一种语言?
1. 如果语言是有穷的(只含有有穷多个句子),可以通过枚举法将语言所有的句子列出表示。
例如,只含两个句子的语言:{“I am a teacher”, “You are students”};
如何描述一种语言?
2. 如果语言是无穷的,描述语言有两种途径:
制定有限条规则,用于产生所要描述的语言的全部句子(可无限多),这些规则构成了该语言的文法。
设计一种装置(算法或过程),它以某字母表上的符号串为输入,判别该符号串是否为所描述语言的句子。此装置称为自动机。