我试图优化我的javacc解析器,我有一个关于在语法定义中定义标记的问题。
是好还是坏的做法?它是否会影响解析器的性能。
示例:
void name() :
{
Token name;
}
{
name = < NAME : ( < LETTER > | < DIGIT > ){2, 7}>
{
System.out.println(name.image);
}
}
答案 0 :(得分:2)
它不会影响性能,但会影响可读性和可维护性。请记住,令牌定义的顺序可能会对含义产生影响。我建议将所有令牌定义放在前面。