flex添加块注释处理规则

为flex添加忽略块注释(BlockComment)的规则

首先声明一个块注释的起始条件,存在块注释状态

复制代码
%x BLOCK_COMMENT

lexer 进入 BLOCK_COMMENT 状态后,只匹配那些被标记为 <BLOCK_COMMENT> 的规则;不带状态标记的普通规则在该状态下不会生效。

然后建立对块注释处理的规则

复制代码
"/*"                   { BEGIN(BLOCK_COMMENT); }
<BLOCK_COMMENT>"*/"    { BEGIN(INITIAL); }
<BLOCK_COMMENT>\n      { /* 忽略换行 */ }
<BLOCK_COMMENT>.       { /* 忽略其他字符 */ }

如果匹配到"/*" ,进入块注释状态BLOCK_COMMENT,从此后若匹配到换行符则忽略,匹配到其它字符忽略,匹配到"*/"则返回初始状态INITIAL,结束块注释。

把行注释和块注释分别处理体现了unix哲学:一个工具只做一件事

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