编译原理——词法,语法,语义分析
一: 词法分析
词法分析的主要任务:
从左向右逐行扫描源程序的字符,识别出各个单词,确定单词的类型
将识别出的单词转换成统一的机内表示——词法单元(token)形式
token:<种别码,属性值>
单词类型 | 种别 | 种别码 |
---|---|---|
关键字 | program.if、 else、then、… | 一词一码 |
标识符 | 变量名、数组名、记录名、过程名、… | 多词一码 |
常量 | 整型、浮点型、字符型、布尔型、… | 一型一码 |
运算符 | 算术(± * │++ – )关系(> <== != >= <= )逻辑(&|~) | 一词一码或一型一码 |
界限符 | ; ()= { }… | 一词一码 |
二:语法分析
语法分析的主要任务:
语法分析器(parser)从词法分析器输出的token序中识别出各类短语,并构造语法分析树(parse tree)
eg:
三:语义分析
语义分析的主要任务:
1.收集标识符的属性信息:
种属,类型,存储长度,存储位置,值,作用域,参数和返回信息
2.语义检查