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