以前、インクリメンタル パーサーを生成する SLR パーサー ジェネレーターを実装したことがあります。パーサーはテキストの一部を最初から最後まで解析できますが、テキストを削除または挿入するときは、すべてを最初から再解析するのではなく、トークン ストリームと構文ツリーで最小限の作業と最小限の変更を行います。問題は、これの用途を見つけることができなかったことですか? パーサーは、通常のパーサーよりも少し多くの作業を行います。そんな使い道あるの?PS。方法を知りたい場合は、「コンパイラ設計の基本」をグーグルで検索してください。これは無料の本です。その後、アルゴリズムを少し変更して、パーサーの状態をどこにでも保存できるようにするだけで済みました。これは余分な作業です。上で述べました。
1 に答える
4
明白な答えは、構造化エディターのサポートです。エディターが保持するのは、テキストではなくASTです。これにより、編集者は、部分的な入力のみが提供された場合に編集を続行する方法を提案できます(たとえば、「while」キーワードの後、編集者は「(」が必要であることを認識し、提案できます。完全な「if」ステートメントを挿入できます)。キーワードだけを入力すると、入力時に入力した構文が間違っているなどと文句を言うことがあります。)
そのようなエディタはたくさん構築されていますが、それらのほとんどは成功していません。人々はこれを行う編集者を好き/嫌いのようです。
私が知っている最も進んだ現在のプロジェクトは、バークレー校のハーモニアプロジェクトです。彼らはあなたのインクリメンタルパーサーの兄貴バージョンであるインクリメンタルGLRパーサーを使用します。
于 2010-11-08T15:31:16.223 に答える