我正在尝试为我的iPhone应用程序编写一个语法。我这样做对吗?

@start = wff;

wff = disjunction ('IMPLIES' | disjunction);
disjunction = conjunction ('OR' | conjunction)*;
conjunction = notexpression ('AND' | notexpression)*'
notexpression = ('NOT')+ primaryexpression;
primaryexpression = (literal | '(' wff ')');
literal = (A | B | C | D | E | F | G | H | I | J | K | L | M | N |O | P | Q | R | S | T |         U | V | W | X | Y | Z);

我得到了错误:
2012-11-26 10:41:06.348 SemanticTab[4092:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not build ClassName from token array for parserName: conjunction'
*** First throw call stack:

当试图解析p或q时?

最佳答案

这里是ParseKit的显影剂。
我看到两个明显的问题:
生产定义为conjunction的行以'结束(单引号)。这应该是一个;(分号)。
literal产品的定义无效。没有定义名为ABC等的产品。但是,如果我理解您的意图,那么定义literal的更简单方法是使用内置的Word产品:
literal = Word;

10-07 18:13