繁体   English   中英

Objective-c中的脚本阅读器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM