javaCC插入不需要的语句

时间:2017-04-18 10:20:44

标签: java grammar javacc

我有以下 javacc 语法。

规则 UnaryExpr 会创建一些实现yourproject\node_modules\react-navigation\src\views\Header.js的匿名类

java.util.function.Predicate<>

当我使用javacc 7.0.2生成代码时,生成的java代码包含一些破坏代码options { static=false; DEBUG_PARSER=false; IGNORE_CASE=true; JDK_VERSION="1.8"; } (...) private Predicate<SAMRecord> UnaryExpr(): { } { ( <DUPLICATE> { return new Predicate<SAMRecord>() { @Override public boolean test(final SAMRecord rec) { return rec.getDuplicateReadFlag();} };} | <UNMAPPED> { return new Predicate<SAMRecord>() { @Override public boolean test(final SAMRecord rec) { return rec.getReadUnmappedFlag();} };} | <FAILSVENDORQUALITY> { return new Predicate<SAMRecord>() { @Override public boolean test(final SAMRecord rec) { return rec.getReadFailsVendorQualityCheckFlag();} };} | <PROPERPAIR> { return new Predicate<SAMRecord>() { @Override public boolean test(final SAMRecord rec) { return rec.getReadPairedFlag();} };} ) } 的额外语句。在java文件中,改为或我的原始代码:

{if ("" != null)

我有:

@Override public boolean test(final SAMRecord rec) {return rec.getDuplicateReadFlag();}

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

这是一种相当讨厌的行为。

你能忍受这个吗?

private Predicate<SAMRecord> UnaryExpr(): {
    class A implements Predicate<SAMRecord> {
        @Override public boolean test(final SAMRecord rec) {
            return rec.getDuplicateReadFlag(); } }

    class B implements Predicate<SAMRecord> {
        @Override public boolean test(final SAMRecord rec) {
            return rec.getReadUnmappedFlag(); } }

    class C implements Predicate<SAMRecord> {
        @Override public boolean test(final SAMRecord rec) {
            return rec.getReadFailsVendorQualityCheckFlag(); } }

    class D implements Predicate<SAMRecord> {
        @Override public boolean test(final SAMRecord rec) {
            return rec.getReadPairedFlag(); } }
}
{
    ( <DUPLICATE> { return new A() ; }
    | <UNMAPPED> { return new B() ; }
    | <FAILSVENDORQUALITY> { return new C() ; }
    | <PROPERPAIR> { return new D() ; }
    )
}