0

我希望能够将输入字符串标记为数组(或一些有效的方法,接受建议),这将使我能够轻松地解释和更改给定的输入。

例如,假设我们正在处理一个计算器,输入是

  55+63.7/7-(6+5)/9+(3-6.5)/(5-2)

我需要创建一个数组或一系列令牌,就像

 {"55","+","63.7","/","7","-","(","6","+","5","... }

最佳实践?我试过研究 parseKit 和 NSScanner,两者看起来都非常合理,但如果可能的话,我想要一个例子来缩短让这个东西正常工作所需的时间。

编辑:

基本上我正在寻找的是一组简单的“解析器”逻辑......

如果我要自己构建一个完整的解析器/扫描器,我可以使用类似的伪代码

 char c
 NSMutableString temp
 NSMutableArray parsed 
 For each c in input {
    if is_number(c)
       while is_number(c)
          add c to temp
       parsed addObject:temp
       reset temp
    if is_operation(c) //single character operations like +, -, /, 
       add c to temp 
       parsed addObject:temp
       reset temp
    if is_letter(c)
       while is_letter(c)
          add c to temp
       if is_keyword(temp) //like sin, cos, tan
           parsed addObject:temp
       else
           input misunderstood //not necessary, really, just useful
       reset temp
  }
4

1 回答 1

0

我想你是对的。您想要的顶级构建是一个简单的递归体面解析器。我刚刚创建了一个尽可能简单的 Bencoding 解析器。也许你可以得到一些想法

https://github.com/mmick66/KDBencoding

于 2014-08-07T15:58:15.437 回答