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哲学:一个工具只做一件事

相关推荐
H Journey3 天前
静态编译与动态编译:链接方式与执行时机(AOT vs JIT)
aot·编译原理·jit
用户753897552817520 天前
《手写解释器》第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·编译原理