3

iPhoneアプリで使用するParsekitの文法を書こうとしています。私はこれを正しくやっていますか?

@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の開発者はこちら。

明らかな問題が 2 つあります。

  1. conjunction生産定義の行は'(一重引用符) で終了します。代わりに;(セミコロン) にする必要があります。

  2. literalプロダクションの定義が無効です。AB、などと呼ばれるプロダクションはC定義されていません。ただし、あなたの意図を理解した場合、定義するより簡単な方法literalは、組み込みのWordプロダクションを使用することです。

    literal = Word;

于 2012-11-27T03:24:54.263 に答える