特定の言語用の小さなエディタを作成したいと思います。エディタでは、indent
を1行または複数行(つまり、各行の左手に空白を追加)することができます。我々はまた、format
全体のコード(すなわち、適切な場所に白いスペースと改行を変更すること)になることができます。ポジションをフォーマッタに保存する一般的な方法
私のフロントエンドはocamllex
とocamlyacc
で、Abstract Syntax Tree (AST)
を構築することができます。 ASTの要素の位置を保存する一般的な方法は何かを知りたい。
私はASTの各要素に(開始)position
を追加することを推測します。例えば、式の型は次のように定義されている場合:
type expression =
...
| E_int of int
| E_function_EEs of Function.t * (expression list)
それはなります:
type expression =
...
| E_int of position * int
| E_function_EEs of position * Function.t * (expression list)
その後、我々は各要素の長さを知っていれば、私たちはすべてのものの位置を推測することができますエディタで。そうするのが一般的な方法ですか?私はそれがいいとは思わない...
当社のDMSツール店は、すべてのツリーノードに/行/列を提出します。これはいいね。 –