詞法分析器里那個狀態轉換圖要用什麼畫?
以前是用筆在作業本上畫沒注意這個問題,發現那種圓圈和弧形箭頭,要矢量圖形狀的,不要有顏色的圖形元素,竟不知道那裡可以畫T_T..
簡單就 Word/Visio 當然 TikZ 系列的東西也可以。
TikZ 效果自然是最好的,而且其 manual 有完整示例,一般做專業書用這個的挺多,不過花時間。學習路徑恐怕會拖的比較長但肯定有好處(多少先得學點 LaTeX 吧雖說完全分出來用恐怕也問題不大)。
圖為 TikZ/PGF 手冊 (http://www.texample.net/media/pgf/builds/pgfmanualCVS2012-11-04.pdf) 70 頁圖,跟著整個教程做下來以後就會了,去掉顏色是最簡單的事情了。
推薦Graphviz,不建議用VISIO和PPT 。
可以從原始數據經過簡單字元串化處理生成圖;可以嵌入到應用程序;布局方式多樣,風格靈活可控;不需要人機交互;支持多種輸出格式;完全免費。
digraph finite_state_machine {
rankdir=LR;
size="8,5"
node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
node [shape = circle];
LR_0 -&> LR_2 [ label = "SS(B)" ];
LR_0 -&> LR_1 [ label = "SS(S)" ];
LR_1 -&> LR_3 [ label = "S($end)" ];
LR_2 -&> LR_6 [ label = "SS(b)" ];
LR_2 -&> LR_5 [ label = "SS(a)" ];
LR_2 -&> LR_4 [ label = "S(A)" ];
LR_5 -&> LR_7 [ label = "S(b)" ];
LR_5 -&> LR_5 [ label = "S(a)" ];
LR_6 -&> LR_6 [ label = "S(b)" ];
LR_6 -&> LR_5 [ label = "S(a)" ];
LR_7 -&> LR_8 [ label = "S(b)" ];
LR_7 -&> LR_5 [ label = "S(a)" ];
LR_8 -&> LR_6 [ label = "S(b)" ];
LR_8 -&> LR_5 [ label = "S(a)" ];
}
dot -Tpng fsm.dot
下面是我閑得無聊把龍書中詞法分析那一章的狀態機自己用 LaTeX + TikZ 畫了一遍。源代碼在 https://www.overleaf.com/read/nqgpxpydxzxw
如果限定在專門畫狀態機的話,最適合的是 Graphviz 和 LaTeX + TikZ 宏包,這兩者都是基於描述語言然後通過命令行轉換成可縮放的 PDF 格式的,Graphviz 本身也可以直接生成 PNG/JPG 格式,LaTeX 生成的 PDF 可以再用 ImageMagick 軟體的 convert 命令轉換為 PNG、JPG 等格式,另外還可以用 pdf2svg 命令把 PDF 格式轉換成可在網頁上縮放的 SVG 矢量格式。
Graphviz 的優點的是描述語言非常簡單,不需要關心 node 的布局,可以配合其他腳本或程序自動生成圖形,例如 C++ Boost 庫的 Graph 演算法就可以把內存中的圖(graph)數據結構直接生成 Graphviz 的描述語言,然後再調用 dot 命令就可以看到圖形了。Graphviz 的缺點也是顯而易見的,就是圖的節點布局是內部演算法自動決定的,沒法手工調整。所以 Graphviz 適合畫對布局和美觀程度要求不高以及需要批量畫圖的場合。
LaTeX 配合 TikZ 宏包可以畫出非常漂亮的圖形,缺點是學習成本比較高,手寫描述語言比較累,不直觀,不過也有一些可視化工具對 LaTeX + TikZ 進行了包裝,例如 TikZIT、TikzEdt。現在還有很多網站可以直接在網頁里輸入 LaTeX 代碼並實時預覽結果,例如 Overleaf: Real-time Collaborative Writing and Publishing Tools with Integrated PDF Preview我寫文章的時候都是用powerpoint來畫,調整顏色很容易,特別好看。
Finite State Machine Designer可以導出PNG,SVG 和 LaTeX
visio
graphviz,dot語言
graphviz
windows的話visio很強大,不過前提是用得好,osx就omnigraffle(實在是貴!),其他免費可以畫流程圖的軟體,百度就有很多了!
Powerdesigner
推薦閱讀:
※sketchbook等手機繪圖軟體如何繪製高大上的作品?有哪些技巧和練習方式?
※Mac上有哪些好用的畫圖軟體可以推薦?
※如何學習 AutoCAD?
※如何製作如下時間軸(縱向)圖表?
※使用數位板作畫,一般有怎樣的流程?