2

我正在浏览 ParseKit 示例并尝试对其进行修改以满足我的需要并遇到此问题。一旦我将语法文件传递给 parserFromGrammar:assembler,我就会得到一个错误:

[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array

我想可能是因为我的语法文件中有带有下划线的标记名称。ParseKit 是否支持下划线?被回调的方法名称是什么?Aka 令牌名称“foo_bar”会调用方法 didMatchFoo_bar 吗?

然后我去掉了所有带下划线的名字,它仍然给我这个错误。我正在使用 ParseKit 网站上的示例语法文件:

@start = sentence+;
sentence = adjectives 'beer' '.';
adjectives = cold adjective*;
adjective = cold | freezing;
cold = 'cold';
freezing = 'freezing';

谢谢

4

1 回答 1

0

ParseKit 的开发者在这里。2件事:

  1. 要回答你的第一个问题,我相信答案是肯定的。

  2. 我刚刚尝试了语法,它似乎对我有用。但是,我使用的是来自 Google Code 的最新版本的 ParseKit(不是 GitHub。GitHub 已过时。抱歉。)

因此,请在此处从 Google 代码中查看 ParseKit:

https://parsekit.googlecode.com/svn/trunk

然后选择“DebugApp”目标和“DebugApp”可执行文件并运行。

在 Xcode 项目中,全局搜索“cold freeze beer”。您会看到我已将您的示例添加为在 DebugApp 中运行的默认示例。似乎工作正常。

于 2011-08-17T23:05:16.117 回答