我正在尝试解析一个文本文件,该文件表示用于递归下降解析器中使用的语法。 文本文件的格式类似于:
"+"
"Term"
"Expr'"
""
"|"
而我真正想要的应该是这样的:
Term Expr'
有人知道我做错了什么吗?
SPRIME ::= Expr eof
Expr ::= Term Expr'
Expr' ::= + Term Expr' | - Term Expr' | e
为了分离左手边并将右手边拆分为单独的产生式规则,我获取每行并调用以下函数:
String[] firstSplit = line.split("::=");
String LHS = firstSplit[0];
String productionRules = firstSplit[1].split("|");
然而,当我调用第二个split方法时,返回的不是由“|”字符分隔的字符串数组,而是右侧每个单独字符的数组,包括“|”。例如,如果我解析Expr'规则并打印productionRules数组,它将如下所示:"+"
"Term"
"Expr'"
""
"|"
而我真正想要的应该是这样的:
Term Expr'
有人知道我做错了什么吗?