匹配空输入的flex脚本?

| 是否可以编写包含一组规则的
lex
或ѭ1where脚本,其中最大munch匹配步骤将始终匹配长度为零的字符串? 我之所以这样问是因为正则表达式的数学定义允许只匹配零长度字符串的正则表达式。例如,简单的正则表达式ε只匹配空字符串。但是,弹性模式文档似乎不允许您指定这种形式的正则表达式。     
已邀请:
        我不了解lex,但是flex可以通过使用尾随上下文来匹配空字符串:
\"\"/. { /* handle empty string */ }
这将在任何字符之前匹配一个空字符串,但几乎可以是任何模式(有关限制的信息,请参见flex文档)。
<INITIAL>\"\"/[-]{2} { BEGIN(sqlcomment); }
<sqlcomment>[^\\n]* { /* Handle sql comment, including -- */ BEGIN(INITIAL); }
如果要匹配输入的结尾,则必须使用特殊符号<< EOF >>(请参阅有关eof的flex文档)。 编辑:现在,我对此进行了更多思考,尾随上下文可能不是强制性的。只是\“ \”可能有效。如果是这样,我仍然强烈建议在可能的情况下使用尾随上下文。它可以防止输入格式错误的许多副作用,并有助于调试。     

要回复问题请先登录注册