簡體   English   中英

如何繪制自動機圖?

[英]how to draw an automaton diagram?

我根據許多人給我的建議使用graphviz ,但遇到了一個問題。 我想使用Format.moduleocaml寫一個點,並且我有一條包含五個字段的記錄,這些字段定義了一個自動機,其中包括由int*char*int列表表示的轉換和由int列表表示的最終狀態。 第一個字段是初始狀態,為int 我還定義了一個函數成員,該成員接受一個參數並測試它是否是給定列表的成員。 我該怎么做才能寫一個完整的點來識別初始狀態,並用node [shape = point]start ; start -> x表示它[shape = point]start ; start -> x [shape = point]start ; start -> x以及其他帶有圓圈的過渡和帶有雙圓的最終狀態? 我嘗試這樣做,但是編譯時遇到了問題

文件“ automatagraphicstest1.ml”,第44行,字符22-37:錯誤:此表達式的類型為autoate-> Format.formatter-> int * char * int-> unit,但期望使用的表達式類型為Format.formatter->' ->單位類型自動與Format.formatter類型不兼容

要解決您的類型錯誤,只需將fmt_transitions函數替換為此:

let fmt_transitions fmt auto =
  Format.fprintf fmt "@[<v 2>digraph output {@,%a@,@]}@,@."
    (Format.pp_print_list (fmt_transition1 auto)) auto.transitions

您的問題是pp_print_list期望使用Format.formatter -> 'a -> unit類型的東西。 您的函數fmt_automaton1將自動機作為額外的第一個參數,因此我們需要首先部分應用它,然后才能提供轉換列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM