我试图弄清楚如何提取给定语法表达式的不同参数。一个语法规则可能如下所示:
s( X, Y(X,-), T(Y(X,-),X,X) )
首先,我想提取前导字符串,在这种情况下s
,然后我想逐步遍历所有参数,在这种情况下X
,Y(X,-)
, T(Y(X,-),X,X)
。也有可能我根本没有参数,只是s
作为一项规则。
在原始语法中,这样的表达式可能有任意数量的参数,而这些参数本身也可能有参数。
目前我得到以下代码:
Scanner sc = new Scanner(Rule);
String next = new String();
sc.useDelimiter("\\(");
next = sc.next();
//...Do something...//
sc.useDelimiter("");
if(sc.hasNext()){ //Check if there are parameters
sc.useDelimiter("\\)"); //Which delimiter should I use?
while(sc.hasNext()){
next = sc.next();
//...Do something...//
}
} else {
return next;
}
我不知道应该使用哪个分隔符来获取有关示例的参数,例如X
, 。Y(X,-)
T(Y(X,-),X,X)