javacc java.lang.NullPointerException

Я пытаюсь создать анализатор miniJava, но у меня возникли проблемы с поиском способа анализа объявлений методов, которые не имеют формальных параметров. например, public int getNumber() Код, который у меня есть сейчас, работает для параметров одного или нескольких, но я не уверен, как вернуть пустой формальный объект, поскольку проблема явно связана со строкой, возвращающей ноль. Есть ли способ вообще пропустить оператор 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;
    }

person Mustafa    schedule 08.03.2015    source источник


Ответы (1)


Я бы посоветовал вам вернуть список формалов из 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; }
}
person Theodore Norvell    schedule 08.03.2015