Objective c 如何调试无效的ParseKit语法?
我正在尝试为ParseKit编写语法,以便它与iphone应用程序中的基本命题逻辑语句相匹配。谁能告诉我哪里出了问题Objective c 如何调试无效的ParseKit语法?,objective-c,grammar,parsekit,Objective C,Grammar,Parsekit,我正在尝试为ParseKit编写语法,以便它与iphone应用程序中的基本命题逻辑语句相匹配。谁能告诉我哪里出了问题 @start = wff; wff = disjunction (implies disjunction)?; disjunction = conjuction (or conjuction)*; conjunction = notExpression (and notExpression)*; notExpression = (not | not primaryExpressi
@start = wff;
wff = disjunction (implies disjunction)?;
disjunction = conjuction (or conjuction)*;
conjunction = notExpression (and notExpression)*;
notExpression = (not | not primaryExpression);
primaryExpression = variable | lbracket wff rbracket;
variable = p | q | r;
p = 'P';
q = 'Q';
r = 'R';
implies = '→';
and = '∧';
or = '∨';
not = '¬';
lbracket = '(';
rbracket = ')';
另外,我将如何添加一些额外的回调,以便可以从语法创建解析树。这里的开发者
我发现一个明显的问题:连接词
在语法中有几个地方拼写错误
ParseKit的语法分析器的错误消息不是最大的。理想情况下,您会收到一条很好的错误消息,引导您解决问题(但是,它是开源的,所以欢迎任何人提供这种性质的修复) 但是,我可以告诉您我是如何发现这些问题的:
~/Desktop/grammar.txt
~/Desktop/input.txt
DebugApp
目标李>
Run
按钮- (void)parser:(PKParser *)p didMatchExpression:(PKAssembly *)a
将a
打印到调试控制台。您将看到如下内容:
(lldb) po a
(PKAssembly *) $1 = 0x00000001075a9010 [] /conjuction/ ^(/or/ /conjuction/)/*
这是传递到回调中的PKAssembly
对象的打印输出。在这里,您可以看到ParseKit的语法分析器无法解析语法的地方。解析此表达式时,ParseKit语法分析器似乎失败:
conjuction (or conjuction)*;
从^
(插入符号)的位置,您可以在看到第一个连接后立即判断解析器是否阻塞
此表达式仅位于语法中的一行:
disjunction = conjuction (or conjuction)*;
这就是我注意到这行有一个拼写错误的原因
这种方法总是会导致你的语法出现问题。希望能有所帮助。谢谢你的帮助。我无法让调试应用程序运行,因为我似乎无法让代码在netbeans中运行。一般来说,我对objective-c和xcode还是很陌生的。我设法使parsekit框架工作的唯一方法是使用cocoapod。