我不是语法专家,但我想在CoreParse [1]中编写CPLEX Parser(这是一种LP语法)。但是CoreParse无法构建以下语法并以堆栈溢出而不是错误退出。 以下是语法的精简示例,但不起作用。 @符号前面的字符串是一个名称,以后可用于评估解析树。 'XXX'指的是指定的词法分类,它们都是定义的。
NSString *expressionGrammar =
@"Complete ::= dir@<Direction> obj@<ObjExpression> 'Enter';\n"
@"Direction ::= 'maximize' | 'minimize';\n"
// obj function
@"ObjExpression ::= term@<ObjTerm> | expr@<ObjExpression> op@<ObjAddOp> term@<ObjTerm> ;\n"
@"ObjTerm ::= 'Identifier' | num@<Number> op@<ObjMulOp> 'Identifier' ;\n"
@"ObjAddOp ::= '+' | '-'; \n"
@"ObjMulOp ::= '*'; \n"
我没有看到任何问题 - 有没有其他人知道为什么这个语法的产生会让发生器陷入无限循环?
谢谢, 马克!