所以我是JavaCC的初学者,我想只接受这个字符串,如果没有重复的话。因此,如果输入低于:
A B C
A' B' C'
A'' B'' C''
如果`B!= B'!= B''
,解析器将只接受它我觉得我缺少一些基本的东西,我找不到很多很容易在线解释JavaCC的教程。如果有人可以指出我的写作方向会很棒。
提前致谢。
编辑:我应该指出,目前我的解析器接受上面的输入,无论重复是什么。
答案 0 :(得分:1)
您可以执行以下操作。在解析器类中,声明一个字段
Set<String> seen = new HashSet<String>() ;
(假设是非静态解析器。如果解析器是静态的,则该字段必须是静态的,必须在reinit
函数中重新初始化。)
然后在你的作品中,你可以做这样的事情。
void start() : { Token t ;} {
( <A>
t = <B> { if( seen.contains( t.image ) ) {
throw new ParserException( "Duplicate" ) ; }
else { seen.add( t.image ) ; } }
<C>
)*
}