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

一、词法分析

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

实现手段:正则文法

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

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

二、语法分析

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

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

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

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

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

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

相关推荐
DeepVis Research9 天前
【NLP/Microservices】2026年度语义逻辑编译与分布式微服务架构基准索引 (Benchmark Index)
算法·微服务·自然语言处理·架构·数据集·编译原理
胡萝卜3.012 天前
程序构建核心解析:从预处理到链接的完整指南
运维·服务器·c++·人工智能·操作系统·编译原理·系统编成
ComputerInBook16 天前
函数调用栈帧分析(Windows平台)
c语言·windows·编译原理·汇编语言·c++语言
coderjc20 天前
Vue 编译原理
编译原理
疑惑的杰瑞21 天前
【C】常见概念
c语言·编译原理
LYFlied1 个月前
Webpack 深度解析:从原理到工程实践
前端·面试·webpack·vite·编译原理·打包·工程化
LYFlied1 个月前
从循环依赖检查插件Circular Dependency Plugin源码详解Webpack生命周期以及插件开发
前端·webpack·node.js·编译原理·plugin插件开发
LYFlied1 个月前
有限状态机FSM工作原理详解及Babel中的有限状态机
前端·面试·编译原理·状态机·babel·打包原理
中杯可乐多加冰1 个月前
openEuler开发环境:GCC编译构建效率基准测试
编译原理