3

我正在尝试为 Parsekit 编写语法以在我的 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 OR Q 时?

4

1 回答 1

2

ParseKit的开发者在这里。

我看到两个明显的问题:

  1. 带有conjunction生产定义的行以'(单引号)结束。那应该是一个;(分号)。

  2. 产生式的定义literal无效。没有定义称为A, B,C等的产生式。但是,如果我理解您的意图,更简单的定义方法literal是使用内置Word生产:

    literal = Word;

于 2012-11-27T03:24:54.263 回答