清教关于编译原理# Java - 爪哇娇娃
f*y
1 楼
我用javacc做一个简单语法分析
token定义如下
TOKEN :
{
|
|
|
< FUNC: ["a"-"z"] ( ["a"-"z","A"-"Z","_","0"-"9"] )* >
|
|
< ID: ( ["a"-"z","A"-"Z","_","0"-"9"] )+ >
}
FUNC指函数名,ID指任意字符窜,就是说这样的情况是合法的FUNC(ID)
。
不过这样的问题是ID的定义包含FUNC,就是在解析的时候,比如遇到test,就不知道是
FUNC还是ID。
这里规定如果函数如果没有参数就省去括号,比如done和test(d)都可以是函数。
所以不知道如何定义,函数名和ID可以解析的时候可以区别。
token定义如下
TOKEN :
{
|
|
|
< FUNC: ["a"-"z"] ( ["a"-"z","A"-"Z","_","0"-"9"] )* >
|
|
< ID: ( ["a"-"z","A"-"Z","_","0"-"9"] )+ >
}
FUNC指函数名,ID指任意字符窜,就是说这样的情况是合法的FUNC(ID)
。
不过这样的问题是ID的定义包含FUNC,就是在解析的时候,比如遇到test,就不知道是
FUNC还是ID。
这里规定如果函数如果没有参数就省去括号,比如done和test(d)都可以是函数。
所以不知道如何定义,函数名和ID可以解析的时候可以区别。