環境:
パーサーについて学んだとき、コード (C++ など) をコンパイルするプロセスは次のように説明されていました。
- コードをファイルに記述して保存します。
- ファイルをコンパイラに入れます。
- コンパイラは、まずコードを抽象構文ツリーに解析します。
- 次にマシンコードを生成します。
- コードを実行してテストします。
- 繰り返す。
Bret Victor は、入力時にコードを評価する一種のプログラミング環境を求めていました。( http://worrydream.com/#!/InventingOnPrinciple )
その概念を 2D ゲーム プログラミングを超えた汎用プログラミングに変換するには、いくつかの概念的な問題があるかもしれないということは、彼が初めてではなかったと思います。スモールトーク。
それは私が議論したいことではありません。
質問: (大雑把で申し訳ありません。主な質問は太字で示しています)
編集中にテキストを解析するにはどうすればよいでしょうか? エディターがテキストの一部が変更されたことを示すイベントを送信するたびに、AST の一部のみが再評価され、AST のこの部分の影響を受ける値も再評価されるという考えがありました。
私は、通常のように文法を使用するパーサー ジェネレーターを作成することを考えましたが、テキスト全体ではなく、テキストの増分変更を処理するパーサーを生成します。
1. これは合理的な概念ですか? (あいまいなプログラミング言語/環境の場合。おそらく「機能的リアクティブ」なもの。または単にhtml。)
(2.) まだ使用されているのでしょうか?
(3.) ファイル全体の解析は、複雑なアプローチを不要にするのに十分な速さですか?
(4.) Eclipse などの IDE の構文ハイライターまたはタイプチェッカーはこのように機能しますか? 代わりに、それらはどのように機能しますか? それらはコンパイラーパーサーほど強力ではなく、十分に高速に動作しないと思いますが、そうですか?
(5.) この Stackoverflow には、スタイル設定されたテキストのライブ プレビューがあります。キーストロークごとに質問全体を解析しますか? 「私の」コンセプトが解決するいくつかの制限はありますか?