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; }
}
我正在尝试制作一个 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; }
}