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_port : (int * int) -> string

ポート情報の dumper

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 を生成する

  • 今後もしルールがサブルールも持てるようにするのであれば, 上記のルール解析関数と合わせて相互再帰関数として定義する必要がある