javacc java.lang.NullPointerException

时间:2015-03-08 00:16:51

标签: parsing grammar javacc

我试图制作一个miniJava解析器,但我很难找到解析没有正式参数的方法声明的方法。 例如public int getNumber() 我现在的代码适用于一个或多个参数,但我不知道如何返回一个空的正式对象,因为问题在于返回null的行。 有没有办法完全跳过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;
    }

1 个答案:

答案 0 :(得分:0)

我建议您从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; }
}