编译原理:词法分析和语法分析的关系

一、词法分析

词法分析通过输入字符流,识别其中的关键字、标识符(变量名)或数字常量,对不合法的变量名等报错:如以数字开头的变量名

实现手段:正则文法

例子:实现能识别小数、正整数、负整数的正则文法

识别出这些字符串后,记录进符号表,方便后面语义分析和语法分析调用

二、语法分析

语法分析在实现类似词法分析的基本功能:模式识别(主要体现在识别句子中每个 token 出现的位置是否符合规范)的基础上,增加了对嵌套和递归的检测

实现手段:上下文无关文法

三、词法分析和语法分析的关系

词法分析:识别不合法 token,记录符号表

语法分析:识别 token 在句子中不合法的位置
词法分析是语法分析实现功能的子集

因此,完全可以使用语法分析器来实现词法分析的功能,但是会增加实现复杂度,效率低等问题

相关推荐
kevinli10 天前
available没你想象中的可靠
ios·编译原理
搞笑僵尸思考时间17 天前
语法分析(5):当我们在谈论语法的时候,我们在谈论什么
编译原理
搞笑僵尸思考时间18 天前
语法分析(4):以听众为中心的自底向上语法分析
编译原理
牛奶18 天前
你不知道的 JS(上):原型与行为委托
前端·javascript·编译原理
牛奶18 天前
你不知道的JS(上):this指向与对象基础
前端·javascript·编译原理
Mintopia22 天前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
搞笑僵尸思考时间23 天前
词法分析(1):从demo代码中抽象
编译原理
搞笑僵尸思考时间23 天前
词法分析(2):万法归一的正则文法
编译原理
zfj3211 个月前
好书分享:《两周自制脚本语言》-用java实现一个脚本语言
java·开发语言·python·编译原理
1900ch1 个月前
flex添加块注释处理规则
编译原理