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

相关推荐
kevinli8 天前
available没你想象中的可靠
ios·编译原理
搞笑僵尸思考时间14 天前
语法分析(5):当我们在谈论语法的时候,我们在谈论什么
编译原理
搞笑僵尸思考时间15 天前
语法分析(4):以听众为中心的自底向上语法分析
编译原理
牛奶16 天前
你不知道的 JS(上):原型与行为委托
前端·javascript·编译原理
牛奶16 天前
你不知道的JS(上):this指向与对象基础
前端·javascript·编译原理
Mintopia20 天前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
搞笑僵尸思考时间20 天前
词法分析(1):从demo代码中抽象
编译原理
搞笑僵尸思考时间20 天前
词法分析(2):万法归一的正则文法
编译原理
zfj3211 个月前
好书分享:《两周自制脚本语言》-用java实现一个脚本语言
java·开发语言·python·编译原理