如何在jflex(flex)词法分析器中使用“\ S”?

时间:2014-04-17 14:32:45

标签: regex whitespace lexer jflex

我想匹配非空格字符,所以我用JFlex定义了flex文件:

%%

Value = [\S]+

%%

{Value}   { return MyTokens.Value; }
.         { return MyTokens.BadCharacter; }

然后我尝试生成的java代码来分析字符串" abc",但我得到:

BadCharacter(a)
BadCharacter(b)
BadCharacter(c)

如果我将声明更改为:

Value = [a-z]+

然后我可以得到预期的结果:

Value(abc)

为什么\S无效?是不是意味着"非空白"?

1 个答案:

答案 0 :(得分:1)

\S应该与非空白代码点匹配。

从手册:

  

这些元字符等同于以下内容:
  \ S \ P {Whitespace}

编辑:我没有看到你在评论中回复: version 1.5中引入了\S