1

我正在尝试使用 JFlex 构建解析器,但遇到了一个非常基本的问题。我想要这个令牌

[A-Za-z]+_N$ { System.out.println("Noun"); }

并让它将“car_N”识别为“名词”而不识别“car_NN”。但它不起作用,如果我使用

[A-Za-z]+_N { System.out.println("Noun"); } 

“car_N”得到认可,但“car_NN”也返回“car_N”,这不是我想要的。

我想知道这里有人知道如何提供帮助吗?

JFlex 和 Flex 前瞻符号“$”似乎不起作用

4

1 回答 1

4

我认为您误解了“$”的含义。作为前瞻,它仅在文本行的末尾匹配(硬换行符)。因此,它工作得非常好。但它不能区分 car_N 和 car_NN,除了 car_N 的实例位于行尾。也许你真的想要一个像这样的前瞻:

[A-Za-z]+_N/[^A-Za-z]
于 2011-11-06T04:29:38.947 回答