[英]Script reader in Objective-c
我正在尝试制作一种简单的标记语言,并且我需要我的Cocoa应用程序能够阅读它。 我希望用Objective-c编写该代码,但是我很高兴使用任何其他语言。
这是我目前的问题。 我正在使用此代码:
for (int character = 1; character < ([script length] - 1); character ++) {
NSLog(@"%@", [[script substringToIndex:character] substringFromIndex:([[script substringToIndex:character] length] - 2)]);
不幸的是,如果我将字符串[button]
传递给它,它将在调试控制台中显示出来:
[
[b
[bu
[but
[butt
[__NSCFConstantString substringWithRange:]: Range or index out of bounds
我可以整理出错误消息,但是我需要知道如何阅读脚本并识别某些标签,例如[button]
。 谁能给我链接到该主题的有用信息?
这一切都取决于脚本语言的预期复杂程度以及其效率和健壮性。
通常,如果您不需要丰富的语法,则最好使用XML或JSON作为语法,并仅将自己的语义应用于其中之一。
否则,解析是编程中一个相当大的复杂领域,您应该在开始学习之前进行一些研究(在网络和书籍中有数十种很好的参考文献)。 在过去数十年的经验中,我已经编写了20个左右的“简单”解析器,我可以证明它从未像您期望的那样简单。
仅举几个例子:
NSString *str = @"[Button]";
NSUInteger i, len = [str length];
for (i = 1; i <= len; ++i)
NSLog(@"%@", [str substringToIndex:i]);
for (i = 0; i < len; ++i)
NSLog(@"%c", [str characterAtIndex:i]);
输出:
[
[B
[Bu
[But
[Butt
[Butto
[Button
[Button]
[
B
u
t
t
o
n
]
还有一个更有趣的案例:
for (i = 0; i < len; ++i)
NSLog([NSString stringWithFormat:@"%%%dc", i+1],
[str characterAtIndex:i]);
产生:
[
B
u
t
t
o
n
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.