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

相关推荐
小向是个Der11 小时前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
阿昭L8 天前
正则表达式
正则表达式·编译原理
DoYoungDo18 天前
从 VS Code 的 when 表达式理解解释器的基本原理
编译原理
福兮说1 个月前
在浏览器里写一个“够用就好“的 Excel 公式求值器
前端·javascript·excel·编译原理
whi2 个月前
编译器到底在干嘛?从字符流到机器码,顺手拆一下 V 编译器的流水线
编译原理·编译器
sickworm陈浩2 个月前
日常修改,3秒生效:腾讯音乐 Android 秒编方案 Jugg 开源
android·编译原理·编译器
_瑞2 个月前
APM_函数调用栈展开
ios·编译原理
_瑞2 个月前
读懂 iOS 的线程调用栈
ios·编译原理·汇编语言
是苏浙5 个月前
编译原理引论练习题
编译原理
是苏浙5 个月前
编译原理引论4
编译原理