タグ付けされた質問 「parsing」

(非)構造化データを分析して、構造化された正規化形式に変換します。

5
csv形式は正規表現で定義できますか?
同僚と私は最近、純粋な正規表現がcsv形式を完全にカプセル化できるかどうかを議論しました。これにより、任意のエスケープ文字、引用文字、および区切り文字を含むすべてのファイルを解析できます。 正規表現は、作成後にこれらの文字を変更できる必要はありませんが、他のエッジケースで失敗してはなりません。 これはトークナイザーだけでは不可能だと主張しました。これを行うことができる唯一の正規表現は、トークン化だけでなく、非常に複雑なPCREスタイルです。 私は次のラインに沿って何かを探しています: ... csv形式はコンテキストのない文法であるため、正規表現のみで解析することは不可能です... それとも私は間違っていますか?POSIX正規表現だけでcsvを解析することは可能ですか? たとえば、エスケープ文字と引用文字の両方がの"場合、これらの2行は有効なcsvです。 """this is a test.""","" "and he said,""What will be, will be."", to which I replied, ""Surely not!""","moving on to the next field here..."

5
パーサーコンビネーターを使用して、構文解析と字句解析のパスを分けるのは良い習慣ですか?
パーサーコンビネーターを使用し始めたとき、私の最初の反応は、構文解析と字句解析の人為的な区別のように感じたものからの解放感でした。突然すべてが解析されただけです! しかし、私は最近、codereview.stackexchangeでこの区別を回復する誰かを示すこの投稿に出会いました。最初はこれは非常にばかげていると思いましたが、Parsecにはこの動作をサポートする機能が存在するという事実に疑問を抱きます。 パーサーコンビネーターで既にレキシシングされたストリームを解析することの利点/欠点は何ですか?

2
コンパイラはコンパイル時間を短縮するためにマルチスレッドを利用しますか?
コンパイラのコースを正しく覚えている場合、典型的なコンパイラの概要は次のとおりです。 字句解析プログラムは、ソースコードを文字ごとにスキャンします(またはスキャン関数を呼び出します)。 入力文字列は、妥当性について語彙素の辞書と照合されます 語彙素が有効な場合、対応するトークンとして分類されます パーサーは、トークンの組み合わせの構文を検証します。トークンごとのトークン。 理論的には、ソースコードを4分の1(または任意の分母)に分割し、スキャンおよび解析プロセスをマルチスレッド化することは可能ですか?マルチスレッドを利用するコンパイラは存在しますか?

3
Strategyパターンを使用したJavaの汎用ファイルパーサーデザイン
私は、モジュールの1つの責任がXMLファイルを解析し、データベースに必要なコンテンツをダンプすることである製品に取り組んでいます。現在の要件はXMLファイルの解析のみですが、将来、あらゆる種類のファイルをサポートできるように解析モジュールを設計したいと考えています。このアプローチの理由は、特定のクライアント向けにこの製品を構築しているが、近い将来に他のクライアントに販売する予定だからです。現在のクライアントのエコシステム内のすべてのシステムはXMLファイルを生成および消費しますが、他のクライアントの場合はそうではありません。 これまでに何を試しましたか?(現在) 戦略パターンに基づいた次の設計を念頭に置いています。私はすぐに日食でコードを書き留めてデザインを伝えたので、例外を適切に処理する方法などの他の側面が今のところ無視されるといいでしょう。 Parser:解析メソッドを公開する戦略インターフェイス。 public interface Parser<T> { public T parse(String inputFile); } *ジェネリックパラメーターを使用する理由は、すべての戻り値の型を許可し、コンパイル時に型の安全性を確保するためです。 ProductDataXmlParser製品関連情報を含むproduct.xmlファイルを解析するための具象クラス。(XMLBeanを使用) public class ProductDataXmlParser implements Parser<ProductDataTYPE> { public ProductDataTYPE parse(String inputFile) { ProductDataTYPE productDataDoc = null; File inputXMLFile = new File(inputFile); try { productDataDoc = ProductDataDocument.Factory.parse(inputXMLFile); } catch(XmlException e) { System.out.println("XmlException while parsing file : "+inputXMLFile); …
14 java  design  parsing  xml 

5
レクサーのトークンを考え出す
私が作成したマークアップ言語のパーサーを書いています(Pythonで書いていますが、これはこの質問にはあまり関係ありません-実際、これが悪い考えのように思える場合は、より良いパスの提案が欲しいです) 。 私はここでパーサーについて読んでいます:http : //www.ferg.org/parsing/index.html、そして、私が正しく理解すれば、コンテンツをトークンに分割するべきレクサーの作成に取り組んでいます。理解できないのは、どのトークンタイプを使用するか、またはどのように作成するかです。たとえば、リンクした例のトークンタイプは次のとおりです。 ストリング 識別子 数 ホワイトスペース コメント EOF {や(などの多くの記号は、独自のトークンタイプとしてカウントされます 私が抱えている問題は、より一般的なトークンの種類が私にとって少しarbitrary意的であるように見えることです。たとえば、なぜSTRINGは独自のトークンタイプとIDENTIFIERであるのですか。文字列は、STRING_START +(IDENTIFIER | WHITESPACE)+ STRING_STARTとして表すことができます。 これは私の言語の難しさに関係しているかもしれません。たとえば、変数宣言はとして記述され{var-name var value}、でデプロイされ{var-name}ます。それはのように思える'{'し、'}'自分自身のトークンにする必要がありますが、VAR_NAMEとVAR_VALUE資格トークンタイプで、またはこれらの識別子の下で、両方の秋のでしょうか?さらに、VAR_VALUEには実際に空白を含めることができます。後の空白var-nameは、宣言内の値の開始を示すために使用されます。他の空白は値の一部です。この空白は独自のトークンになりますか?空白は、このコンテキストでのみその意味を持ちます。さらに、{変数宣言の始まりではないかもしれません..それはコンテキストに依存します(その言葉が再びあります!)。 {:名前宣言を開始し、{ 値の一部として使用することもできます。 私の言語は、ブロックがインデントで作成されるという点でPythonに似ています。Pythonがlexerを使用してINDENTおよびDEDENTトークンを作成する方法について読んでいました(多かれ少なかれ、他の多くの言語で何{をし、何を}するのか)。Pythonはコンテキストフリーであると主張しています。つまり、少なくとも字句解析者は、トークンの作成中にストリーム内のどこにいるかを気にする必要はありません。Pythonのレクサーは、前の文字を知らずに特定の長さのINDENTトークンを構築していることをどのように認識しますか(たとえば、前の行が改行だったので、INDENTのスペースの作成を開始します)。私もこれを知る必要があるので尋ねます。 私の最後の質問は最も愚かなものです。なぜレクサーが必要なのでしょうか?パーサーは文字ごとに行って、それがどこにあり、何を期待しているかを把握できるように思えます。レクサーは単純さの利点を追加しますか?
14 python  parsing  lexer 

2
構文解析ツリーと抽象構文ツリーの違いを説明する最も簡単な例は何ですか?
私の理解では、パーサーは解析ツリーを作成し、その後それを破棄します。ただし、抽象構文ツリーをポップアウトすることもできます。これは、コンパイラが使用すると思われます。 私は、解析ツリーと抽象構文ツリーの両方が解析段階で作成されているという印象を受けています。次に、これらが異なる理由を誰かが説明できますか?
14 parsing  trees 

5
csvパーサーの単体テスト
csvパーサーの単体テストに使用するテストは何ですか? C#には単純なcsvパーサーがあり、すべての一般的な(および一般的ではない)エッジケースのユニットテストのカバレッジが良好であることを確認したいと思います。潜在的な問題と境界ケースを識別するために、どのテストを使用する必要がありますか?
14 testing  parsing 

2
「ダングリングエルス問題」とスキャナーレス解析は何の関係がありますか?
Dangling Else問題に関するWikipediaの記事のこの文は理解できません。 [Dangling Elseの問題]は、コンパイラの構築、特にスキャナーレス解析でしばしば発生する問題です。 誰かがスキャナーレス解析技術がこの問題を悪化させる可能性があることを私に説明できますか?問題は文法にあるようです-曖昧だからです-解析手法の選択ではありません。私は何が欠けていますか?

5
会社の機密研究コードからのオープンソースコードリリースの作成を最適に管理するにはどうすればよいですか?
私の会社(Acme Technologyと呼びます)には、元々Acme Labsの研究グループから来た数千のソースファイルのライブラリがあり、開発グループで数年間インキュベートされ、最近では少数の顧客に提供されています非開示。Acmeは、おそらくコードの75%をオープンソースコミュニティにリリースする準備をしています。他の25%は後でリリースされますが、現在のところ、顧客が使用する準備ができていないか、競合他社の手に渡らないようにする必要がある将来のイノベーションに関連するコードが含まれています。 現在、コードは#ifdefsでフォーマットされており、同じコードベースを、大学の研究者やはるかに広範な商業顧客がオープンソースに移行する前に利用できるプリプロダクションプラットフォームと連携することができます。実験とプロトタイピング、および将来のプラットフォームとの前方互換性テストに利用できます。単一のコードベースを維持することは、2つのコピーを並行して維持するのが困難な私のグループの経済性(および健全性)にとって不可欠であると考えられています。 現在のベースのファイルは次のようになります。 > // Copyright 2012 (C) Acme Technology, All Rights Reserved. > // Very large, often varied and restrictive copyright license in English and French, > // sometimes also embedded in make files and shell scripts with varied > // comment styles. > > > ... …

6
人間が読める最も単純な構成ファイル形式は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 現在の構成ファイルは次のとおりです。 mainwindow.title = 'test' mainwindow.position.x = 100 mainwindow.position.y = 200 mainwindow.button.label = 'apply' mainwindow.button.size.x = 100 mainwindow.button.size.y = 30 logger.datarate = 100 logger.enable = True logger.filename = './test.log' これは、Pythonを使用してネストされた辞書に読み込まれます。 { 'mainwindow':{ 'button':{ 'label': {'value':'apply'}, ... }, 'logger':{ datarate: {'value': 100}, enable: {'value': True}, filename: {'value': './test.log'} }, …

2
解析されたデータの自然言語処理の永続化
最近、スタンフォードのCoreNLPを使用して自然言語処理(NLP)の実験を開始しましたが、テキストマイニングアプリケーションなどのNLP解析データを保存する標準的な方法にはどのようなものがありますか? 面白いと思う方法の1つは、子を隣接リストとして保存し、再帰クエリをうまく利用することです(Postgresはこれをサポートしており、非常にうまく機能していることがわかりました)。 しかし、私は長年にわたってこの分野で働いている人々によって採用されてきた分析の種類に応じて、おそらくこれを行うための多くの標準的な方法があると思います。それでは、NLPで解析されたデータの標準的な永続化戦略とは何ですか?

3
パーサーの文法を指定するにはどうすればよいですか?
私は長年プログラミングを行ってきましたが、依然として非常に時間がかかるタスクの1つは、パーサーの文法を指定することです。この過度の努力の後でも、私が思いついた文法が良いかどうかはわかりません( 「適切」の合理的な尺度によって)。 文法を指定するプロセスを自動化するアルゴリズムがあるとは思っていませんが、現在のアプローチの当て推量と試行錯誤の多くを排除する問題を構築する方法があることを願っています。 私の最初の考えはパーサーについて読むことであり、私はこれのいくつかを行いましたが、私はこの主題について読んだすべてが文法を与えられたものとして(または検査によってそれを指定できるほど些細な)、そして焦点を当てますこの文法をパーサーに変換する問題。私は直前の問題に興味があります:そもそも文法を指定する方法。 私は主に、具体的な例(ポジティブとネガティブ)のコレクションを正式に表す文法を指定する問題に興味があります。これは、新しい構文を設計する問題とは異なります。この区別を指摘してくれたマクニールに感謝します。 文法と構文の違いを本当に理解したことは一度もありませんでしたが、理解し始めた今、私は主に文法を指定する問題に興味があると言って最初の明確化を明確にすることができました事前に定義された構文:私の場合、この構文の基礎は通常、ポジティブな例とネガティブな例の集まりです。 パーサーの文法はどのように指定されていますか?ベストプラクティス、設計方法論、およびパーサーの文法の指定に関するその他の有用な情報を説明するための事実上の標準である本または参考資料はありますか?パーサーの文法について読むとき、どの点に焦点を合わせるべきですか?

3
HL7メッセージを使用する場合、どのような問題が発生する傾向がありますか?
私はヘルスケア事業向けの製品をテストしていますが、HL7メッセージを使用しています。HL7の問題について別の質問でうめき声をあげているが、詳細については言及していない。誰かが私たちが特に探しているべき問題や問題のクラスのアイデアを教えてもらえますか? 解析によく使用されるライブラリを使用しています。これらの詳細や私たちがやっていることが役立つ場合は、コメントで知らせてください。できれば質問に追加します。
12 testing  parsing  hl7 

2
同じ優先順位の2つの二項演算子、左結合および右結合を持つ言語
2つの2項演算子をopl持ちopr、同じ優先順位でopl左結合およびopr右結合であるプログラミング(またはスクリプト)言語(またはドメイン固有の言語)はありますか? (そのような例を見つけることはできませんが、その奇妙なケースを処理するのに十分な一般的なパーサーをコーディングしようとしています) x opl y opr zまたはx opr y opl zの形式の式はどのように解析されますか?より一般的には、さらに多くのオペランドを使用しますか?

2
素人の言葉で言えば、左再帰とは何ですか?
code.google.comの1ページによると、「左再帰」は次のように定義されています。 左再帰とは、再帰的な非終端記号を指し、それ自体を含む知覚形式を生成する場合、それ自体の新しいコピーが生成規則の左側に表示されます。 ウィキペディアには、2つの異なる定義があります。 文脈自由文法の観点では、rの生成(「代替」)の左端の記号がすぐ(直接/即時左再帰)または他の非終端記号を介して、非終端記号rが左再帰である場合定義(間接/非表示の左再帰)は、rに再度書き換えます。 「文法が左再帰的であるのは、それ自体が左記号として最終的に文型を導き出す非終端記号Aを見つけることができる場合です。」 私はここで言語作成を始めたばかりで、暇なときにそれをやっています。ただし、言語パーサーの選択に移ると、このパーサーで左再帰がサポートされているか、そのパーサーがすぐに前面および中央に表示されるかが問題になります。「文型」などの用語を検索しても、専門用語のリストが表示されるだけですが、「左」再帰の区別はほとんど非常に単純でなければなりません。翻訳をお願いします?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.