书四章语法分析 南京大学计算机系 戴新宇 2019-3
南京大学计算机系 戴新宇 2019-3 1
概要 ●语法分析器 上下文无关文法 ●语法分析技术 自顶向下 自底向上 语法分析器生成工具
概要 语法分析器 上下文无关文法 语法分析技术 自顶向下 自底向上 语法分析器生成工具 2
引言 程序设计语言源程序的构成 文法:一种用于描述程序设计语言语法的表示方法,能 够自然地描述程序设计语言构造的层次化语法结构 文法给出了一个程序设计语言的精确易懂的语法规约 可以基于文法构造语法分析器,帮助确定源程序的语法结构 ●语法结构有助于把源程序翻译为正确的目标代码,以及检测 导语法错误。 文法的扩展性 ● Standard c++ Grammar ava sE7 grammar
引言 程序设计语言源程序的构成 文法:一种用于描述程序设计语言语法的表示方法,能 够自然地描述程序设计语言构造的层次化语法结构。 文法给出了一个程序设计语言的精确易懂的语法规约 可以基于文法构造语法分析器,帮助确定源程序的语法结构 语法结构有助于把源程序翻译为正确的目标代码,以及检测 导语法错误。 文法的扩展性 Standard C++ Grammar Java SE7 Grammar 3
语法分析器(What) ●输入:词法分析器输出的词法单元序列 输出:语法树表示 ●语法分析器的类型: 通用型(CKY, Earley) 自顶向下:通常处理LL文法 自底向上:通常处理LR文法
语法分析器(What) 输入:词法分析器输出的词法单元序列 输出:语法树表示 语法分析器的类型: 通用型(CKY,Earley) 自顶向下:通常处理LL文法 自底向上:通常处理LR文法 4
语法分析器(Why) 源程序 词法词法单元 语法 语法 前端的中间表示 分析器 分析器1分析树 其余部分 获取下 个词法单元 符号表 语法分析器功能: 验证输入源程序的合法性,并输出良构程序的语法结构 对于病构的程序,能够报告语法错误,并进行错误回复 写入符号表,类型检查,语义分析,翻译生成中间代码等往往和语 分析过程容绩成,塞践中往往和语法分析放入一个模块,图上
语法分析器(Why) 语法分析器功能: 验证输入源程序的合法性,并输出良构程序的语法结构 对于病构的程序,能够报告语法错误,并进行错误回复 写入符号表,类型检查,语义分析,翻译生成中间代码等往往和语 法分析过程交错完成,实践中往往和语法分析放入一个模块,图上 用“前端的其余部分”表示上述活动。 5