国外精选视频课:编译原理入门2

源代码的词法单元化和符号表的作用

单词的词法与它在一句话的上下文或者语言本身的释义紧密联系,并且,词库可以使字典的另一种叫法

在编译的这方面,词法分析目的是为了确定在源码中单个词的含义

词法分析器输入的是我们程序中源代码,对于词法分析器而言,所输入的仅仅是一长串的文本内容而已
词法分析器输出的是一串词法单元流
所以,对于编译过程的词法分析阶段,有时候也称之为标记化阶段

每次从左到右扫描一个字符,词法分析器的工作就是对所输入的字符串识别并分离出各个元素,也就是将字符串分解为子字符串,每个子串也即是一个程序单字,词法分析器会将被拆分过后的子字符串翻译为能被识别的词法
一个词法可以使一个关键字,例如if ,then
也可以是一个关系型运算符,小于号或者等于号这样的
也可以是赋值运算符,例如等于号或者其他语言中的双等号

在这里插入图片描述
词法分析器在扫描输入字符串时需要先查找间隔符
这样可以确定一个词位结束和下一个词位开始的位置,词位可以通过在词法分析器程序中使用正则表达式定义的相邻字符的模式来识别

对于每个词法来说,作为一个生成的标记,它包含了词位类别和这个词位本身

词法分析器检测源代码中的错误的能力非常有限
他也许能发现一些非法字符,但是对于个别关键字拼写的正确与否却无能为力,拼写错误的关键字可能被误识为标识符
词法分析器不会,也没有能力对相关关键字所允许的发生顺序或者是数据类型不匹配进行管理

符号表的目的是为编译器提供在整个编译过程中对源码内所使用的的每个符号名称所代表的各种信息进行快速访问

summarization

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44522477/article/details/112061127