Module Analyze
Analyze AST.
include Analyze__.Sem_graph
module LocalPortMap = Analyze__.Sem_graph.LocalPortMap
局所リンクのポートの収集のためのマップモジュール
type local_port_map
= (int * int) list LocalPortMap.t
アトムの位置とポートの引数番号の組のリストのマップ
val string_of_local_port_binding : (int * (int * int) list) -> string
local_port_map の binding の dumper
val string_of_local_port_map : (int * int) list LocalPortMap.t -> string
local_port_map の dumper
type a_atom
= int * Corelang.c_atom
アトムには一意な id を割り当てる
type a_graph
= local_port_map * a_atom list
アトムのリストには局所リンクのポートの情報も付加する
type a_rule
=
|
ARule of string * a_graph * Parse.arg list * (a_graph * Corelang.c_conn list)
val string_of_graph : ((int * int) list LocalPortMap.t * ('a * (string * Corelang.c_link list)) list) -> string
val string_of_rule : a_rule -> string
val string_of_sem_graph : (((int * int) list LocalPortMap.t * ('a * (string * Corelang.c_link list)) list) * a_rule list) -> string
val sem_graph_of_atoms : ('a * Corelang.c_link list) list -> (int * int) list Analyze__.Sem_graph.LocalPortMap.t * (int * ('a * Corelang.c_link list)) list
Core language のグラフを解析して Semantic graph を生成する
- 現状アトムに 0 から連続した整数を振ってやって,ポートの位置情報を付加するだけ
val sem_graph_of_rule : Corelang.c_rule -> a_rule
ルールの解析を行う
val sem_graph_of_process : (('a * Corelang.c_link list) list * Corelang.c_rule list) -> ((int * int) list Analyze__.Sem_graph.LocalPortMap.t * (int * ('a * Corelang.c_link list)) list) * a_rule list
Core language のグラフとルールセットを解析して Semantic graph を生成する
- 今後もしルールがサブルールも持てるようにするのであれば, 上記のルール解析関数と合わせて相互再帰関数として定義する必要がある