質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

Q&A

解決済

1回答

729閲覧

bisonに-gオプションをつけて生成された.vcgファイルの開き方

Munchakoopas

総合スコア1

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

0グッド

0クリップ

投稿2021/12/18 17:23

編集2022/07/01 13:54

前提・実現したいこと

現在構文解析を勉強していて、その過程でbisonを使っていました。.yファイルの内容をオートマトンに書き起こしたいと思い、
http://www.cs.info.mie-u.ac.jp/~toshi/lectures/compiler/yacc-parser.html
のページを参考にして、bison -g test.yのようにして実行したのですが、出力されたvcgファイルをオートマトンの画像にする方法がわかりません。
どうにかして状態遷移図をみたいです。解決方法を教えていただけると幸いです。

出力されたファイル

このような形式のファイルが出力されました。

vcg

1graph: { 2 display_edge_labels: yes 3 long_straight_phase: yes 4 priority_phase: yes 5 port_sharing: no 6 crossing_weight: median 7 splines: yes 8 node: { 9 title: "0" 10 label: "state 0\n $accept -> . lines $end" 11 } 12 edge: { 13 sourcename: "0" 14 targetname: "1" 15 label: "'\n'" 16 color: blue 17 textcolor: black 18 } 19 edge: { 20 sourcename: "0" 21 targetname: "2" 22 label: "'a'" 23 color: blue 24 textcolor: black 25 } 26 edge: { 27 sourcename: "0" 28 targetname: "3" 29 label: "'('" 30 color: blue 31 textcolor: black 32 } 33 edge: { 34 sourcename: "0" 35 targetname: "4" 36 label: "lines" 37 color: green 38 textcolor: black 39 } 40 edge: { 41 sourcename: "0" 42 targetname: "5" 43 label: "line" 44 color: green 45 textcolor: black 46 } 47 edge: { 48 sourcename: "0" 49 targetname: "6" 50 label: "S" 51 color: green 52 textcolor: black 53 } 54 node: { 55 title: "1" 56 label: "state 1\n line -> '\n' ." 57 } 58 node: { 59 title: "2" 60 label: "state 2\n S -> 'a' ." 61 } 62 node: { 63 title: "3" 64 label: "state 3\n S -> '(' . L" 65 } 66 backedge: { 67 sourcename: "3" 68 targetname: "2" 69 label: "'a'" 70 color: blue 71 textcolor: black 72 } 73 edge: { 74 sourcename: "3" 75 targetname: "3" 76 label: "'('" 77 color: blue 78 textcolor: black 79 } 80 edge: { 81 sourcename: "3" 82 targetname: "7" 83 label: "')'" 84 color: blue 85 textcolor: black 86 } 87 edge: { 88 sourcename: "3" 89 targetname: "8" 90 label: "S" 91 color: green 92 textcolor: black 93 } 94 edge: { 95 sourcename: "3" 96 targetname: "9" 97 label: "L" 98 color: green 99 textcolor: black 100 } 101 node: { 102 title: "4" 103 label: "state 4\n $accept -> lines . $end" 104 } 105 edge: { 106 sourcename: "4" 107 targetname: "10" 108 label: "$end" 109 color: blue 110 textcolor: black 111 } 112 node: { 113 title: "5" 114 label: "state 5\n lines -> line . lines" 115 } 116 backedge: { 117 sourcename: "5" 118 targetname: "1" 119 label: "'\n'" 120 color: blue 121 textcolor: black 122 } 123 backedge: { 124 sourcename: "5" 125 targetname: "2" 126 label: "'a'" 127 color: blue 128 textcolor: black 129 } 130 backedge: { 131 sourcename: "5" 132 targetname: "3" 133 label: "'('" 134 color: blue 135 textcolor: black 136 } 137 edge: { 138 sourcename: "5" 139 targetname: "11" 140 label: "lines" 141 color: green 142 textcolor: black 143 } 144 edge: { 145 sourcename: "5" 146 targetname: "5" 147 label: "line" 148 color: green 149 textcolor: black 150 } 151 edge: { 152 sourcename: "5" 153 targetname: "6" 154 label: "S" 155 color: green 156 textcolor: black 157 } 158 node: { 159 title: "6" 160 label: "state 6\n line -> S . '\n'" 161 } 162 edge: { 163 sourcename: "6" 164 targetname: "12" 165 label: "'\n'" 166 color: blue 167 textcolor: black 168 } 169 node: { 170 title: "7" 171 label: "state 7\n L -> ')' ." 172 } 173 node: { 174 title: "8" 175 label: "state 8\n L -> S . L" 176 } 177 backedge: { 178 sourcename: "8" 179 targetname: "2" 180 label: "'a'" 181 color: blue 182 textcolor: black 183 } 184 backedge: { 185 sourcename: "8" 186 targetname: "3" 187 label: "'('" 188 color: blue 189 textcolor: black 190 } 191 backedge: { 192 sourcename: "8" 193 targetname: "7" 194 label: "')'" 195 color: blue 196 textcolor: black 197 } 198 edge: { 199 sourcename: "8" 200 targetname: "8" 201 label: "S" 202 color: green 203 textcolor: black 204 } 205 edge: { 206 sourcename: "8" 207 targetname: "13" 208 label: "L" 209 color: green 210 textcolor: black 211 } 212 node: { 213 title: "9" 214 label: "state 9\n S -> '(' L ." 215 } 216 node: { 217 title: "10" 218 label: "state 10\n $accept -> lines $end ." 219 } 220 node: { 221 title: "11" 222 label: "state 11\n lines -> line lines ." 223 } 224 node: { 225 title: "12" 226 label: "state 12\n line -> S '\n' ." 227 } 228 node: { 229 title: "13" 230 label: "state 13\n L -> S L ." 231 } 232 233 234}

補足情報(FW/ツールのバージョンなど)

環境はwindows10のwsl2で、bisonのバージョンは以下のとおりです。

bison (GNU Bison) 1.875 Written by Robert Corbett and Richard Stallman. Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

graph-easy というツールが対応しているようです。

投稿2021/12/18 22:05

int32_t

総合スコア20872

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問