2012-03-15 5 views
2

私は、ParseKitとパーズタイムスタンプについてかなり簡単な質問をしました...どのようにドット/ピリオドの記号的性質を強制するのですか?ParseKit文法を使用してタイムスタンプを解析する

たとえば、2008-01-25を解析しようとすると、date = /\d{4}/ '-' /\d{2}/ '-' /\d{2}/のようなものを使用できます。実際には、しかし、まさにこの(興味深いことに、しかし、あなたは@symbolState='-';を追加しない限り提供文法のDemoAppでは動作しませんが、私は話を戻そう...)

を行いParseKitに同梱されてdate.grammarは何をすべきか、そこにありますたとえば、2008.01.25または2008-01-25-12.34.45のように、ドットを含む日付を解析する場合は、私は行います。私は@symbolStateディレクティブに'.'を追加しようとしましたが、無視され続けるだけです。私は現時点で私の文法をテストするためにDemoAppに頼っていることに注意してください...違いがあれば分かりません。

ご意見をいただければ幸いです。

+0

お試しください:/¥d{4}\.\d{2}\.\d{2}/ – Eduardo

+0

提案をありがとうございます。それはうまくいかないが、再び '/ \ d {4} - \ d {2} - \ d {2} /'はどちらも解析しない。 –

答えて

2

ParseKitの開発者はここになります。

最初に、date.grammarファイルのバグに感謝します。私はそれを修正した。


あなたの主な質問は、今までParseKitでは不可能だったことを私は確信しています。

ParseKitのトークナイザ(PKTokenizer)はのみ整数Numberトークンを生成することができませんでした、です。数字は常に浮動小数点としてトークン化されました。つまり、3.14のような入力を3つの別々のトークンとして解析することは不可能でした。3(数字).(シンボル)14(数値)むしろ、それは常に3.14としてトークン化されるでしょう。

グッドニュース:YESデフォルト

-[PKNumberState allowsFloatingPoint] 

:私は、新しい方法でこの機能を追加しました。

そして、私はあなたのようなあなたのParseKitの文法で使用できるマッチングトークナイザ指令追加:

@allowsFloatingPoint = NO; 

NOTEこの機能を確認するためにGoogle Codeのトランクの最新HEADをチェックアウトする必要がありますが。

ので、ここでは、新しい機能を持つために求めていたものをざっとない例日付文法です:私は思ったんだけど

@symbolState = '.'; 
@allowsFloatingPoint = NO; 

@start = date; 

date = year dot month dot day; 

year = /\d{4}/; 
month = /\d{2}/; 
day  = /\d{2}/; 

dot = '.'; 

+1

ありがとうございます。それは今働く。自宅で遊んでいる人のために、タイムスタンプの文法( '2008-01-23-12.34.56.987654')は次のようになります: ' @symbolState = '。' ' - '; @allowsFloatingPoint = NO; @start = date; 日付=年ダッシュ月ダッシュ日ダッシュ時間ドット分ドット第2ドットナノ秒; 年=/\ d {4} /; 月=/\ d {2} /; 日=/d {2} /; 時間=/\ d {2} /; 分=/\ d {2} /; 秒=/\ d {2} /;ナノ秒=/\ d {6} /; dot = '。'; ダッシュ= ' - '; ' –

+0

ところで、Google Code * just *が再び協力を開始したので、この機能を完全にチェックしました。遅延/混乱のために申し訳ありません。 –

+0

Todd - Parsekitを「ロンドンの明日の午後3時に会う」のようなものを解析して処理するために使用できるかどうか疑問に思っていますか?基本的には、日付と時刻を抽出し、これに基づいてアラートを作成したいと思います。 – strangetimes

2

シンプルなアイデアは、単に解析するparseKitを取得するかもしれない場合日付を文字列として返し、それをNSDate :: dateWithNaturalLanguageString:locale:orNSDate :: dateWithNaturalLanguageStringに渡して処理します。

+0

私が持っている文法(上記を参照)に、これが本当に良いアプローチであるかどうか疑問に思っています。 '。'を設定する際の問題浮動小数点を許さないということは、 '2008-01-23-12.34.56.987654 value = 3.14'という文字列を解析することがずっと難しくなることを意味します。 ディレクティブを特定のプロダクションに適用できるかどうかは素晴らしいことです。 –

+0

@トッドはそれに答える必要があります。私はParseKitと文法の基本知識しか持っていません:-( – drekka

+0

私は次のParseKitの挑戦であり、(完全な解決策のために)日付を解析するのにも様々なローカライズされた日付フォーマットを扱う必要があるので、 。 – Rich

関連する問題