javacc java.lang.NullPointerException

javacc java.lang.NullPointerException

我正在尝试制作一个 miniJava 解析器,但我无法找到一种方法来解析没有形式参数的方法声明。 例如 public int getNumber() 我现在拥有的代码适用于一个或多个参数,但我不确定如何 return 一个空的正式对象,因为显然问题出在行 returning null 上。 有没有办法完全跳过 return 语句而 return 什么都没有?

public Formal nt_FormalList() :
{
    Type t;
    Token s;
    LinkedList<Formal> fl = new LinkedList<Formal>();
    Formal f;

}
{
    t = nt_Type() s = <IDENTIFIER> (f = nt_FormalRest() {fl.add(f);})*
    { return new Formal(t, s.image); }

    | {}    
    { return null; }
}

.....

public class Formal {

    public final Type t;
    public final String i;

    public Formal(Type at, String ai) {
        t = at;
        i = ai;
    }

我建议你 return 来自 nt_FormalList 的正式名单。

public List<Formal> nt_FormalList() :
{
    LinkedList<Formal> fl = new LinkedList<Formal>();
    Formal f;
}
{
    [ f = nt_Formal() {fl.add(f);}
      (<COMMA> f = nt_Formal() {fl.add(f);})*
    ]
    { return fl; }
}