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

一、词法分析

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

实现手段:正则文法

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

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

二、语法分析

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

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

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

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

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

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

相关推荐
H Journey3 天前
静态编译与动态编译:链接方式与执行时机(AOT vs JIT)
aot·编译原理·jit
用户753897552817519 天前
《手写解释器》第10章 函数
编译原理·编译器
原则猫20 天前
AST 与AI 应用
编译原理
米丘1 个月前
Vue 3.x 单文件组件(SFC)模板编译过程解析
前端·vue.js·编译原理
米丘1 个月前
Vue 3.x 模板编译优化:静态提升、预字符串化与 Block Tree
前端·vue.js·编译原理
无巧不成书02182 个月前
编辑器、编译器与解释器全解析
编辑器·编译原理·编译器·编程入门·解释器·开发工具链
Hello.Reader2 个月前
编译器的六大阶段详解以一行赋值语句为例
编译原理·逆向工程
九成宫3 个月前
编译技术/编译原理期末复习
笔记·软件工程·编译原理·编译技术
故事和你913 个月前
sdut-程序设计基础Ⅰ-实验二选择结构(1-8)
大数据·开发语言·数据结构·c++·算法·优化·编译原理
kevinli3 个月前
available没你想象中的可靠
ios·编译原理