抽象语法树
词法分析概述
高级语言源程序由一系列的句子构成,句子由单词按照一定的规则构成,而单词又由字符按照一定规则构成的。词法分析是编译基础,主要分析源程序中的字符流能否构成正确的单词,执行词法分析的程序称为词法分析程序或扫描器。
词法分析任务是:从左到右逐个字符扫描输入的源程序,按照构词规则,检查词法错误,识别出正确的单词,并输出单词的内部表示形式。如果识别过程中发现错误或无法识别的单词,则输出有关错误信息。
识别单词的目的是为了后续阶段的使用。因此为了简化后续阶段的工作,需要对每个单词(或单词类别)进行编码,这个编码称为种别码,又称token值。当识别出一个单词时,就将其种别码及单词自身的值一起输出,把作为字符串输入的源程序改造成单词记号换的中间形式(又称为token串),提交给语法分析程序使用。
语法分析概述
语法分析器的作用:根据词法分析器提供的单词流,为语法正确的输入构造抽象语法树;检查输入中的语法(可能包括词法)错误,并调用出错处理器进行适当处理。
许多编译器,特别是由自动生成工具构造的编译器,往往其前端的中心部件就是语法分析器。
源程序中可能出现的错误:
词法错误:指非法字符或拼写错关键字、标识符等
语法错误:指语法结构出错,如少分号、括号不匹配、begin/end不配对等
静态语义错误:如类型不一致、参数不匹配等
动态语义错误(逻辑错误):如死循环、变量为零时作除数等
语义分析概述
语义分析是编译过程的一个逻辑阶段, 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误,如有的编译程序要对实数用作数组下标的情况报告错误。
原文地址:https://blog.csdn.net/weixin_45792450/article/details/134629573
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_3931.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!