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 に答える