我正在尝试使用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预测符号'$'似乎无法正常工作
答案 0 :(得分:2)
我认为你误解了'$'的含义。作为一个先行,它只匹配一行文本的末尾(强硬中断)。因此它工作得非常好。但它无法区分car_N和car_NN,除了car_N位于一条线末端的实例。也许你真的想要一个前瞻性的东西:
[A-Za-z]+_N/[^A-Za-z]