abap34/almo

ASTのノードの検索を追加

Closed this issue · 1 comments

例えば PyOdide が必要か調べるために ExecutableCodeBlock が存在するか調べる、脚注として生成すべき数を調べるなどのためにノードの検索機能が必要.

  • 検索の仕方 (ノードのマッチ条件の記述方法)
  • 検索結果の表現方法

についてまず考える

叩き台としての案

  • ast.find_class( {class名} )
  • ast.find_id( {id} )

などを作る. (JS の document.getElementsBy... のイメージ)

例えば、PyOdide が必要か調べたかったら
ast.find_class("ExecutableCodeBlock"), ast.find_class("Judge") で分岐する。

思っていること

  • 性質で検索をかけづらい?
    • 例えば、PyOdide が必要なのか調べたいなら "実行するもの" に対して検索をかけたい。今それをやるには、それが ExecutableCodeBlockJudge である、という知識が必要
    • ある性質を満たす (ことが宣言されている) ものに対して検索をかけられるようにするとか、あるいは条件式を渡すとかができたら便利なことが多そう?ただ、検索がかけられがちなものは少ないことも予想できて、検索部分を複雑にするより、その辺を「便利メソッド群」として定義しておいて済ませる方が全体としては楽かもしれない。