作者Neilhahaha (Neil)
看板EE_DSnP
標題[問題] YACC與LEX回傳值
時間Sat Dec 19 18:27:22 2009
剛剛依照講義的example
在compile yylval.sv=&tempStr這行的時候出現了
request for member 'sv' in something not a structure or union
想請問這是什麼意思呢 還有tempStr需不需要先宣告成String或Char*呢?
感謝回答!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.125
1F:推 ric2k1:上面這行是寫在 lex 還是 yacc? 12/19 20:34
2F:→ ric2k1:(應該是在 lex 吧!?) 12/19 20:37
3F:→ ric2k1:然後你的 yacc "definition section" 的地方記得加上 12/19 20:38
4F:→ ric2k1:union { string *sv; }; 12/19 20:38
5F:→ Neilhahaha:我有加%union那部份還是不行 12/19 20:38
6F:推 ric2k1:lex file 有定義 "static string tempStr;" 嗎? 12/19 20:39
7F:→ ric2k1:(上面 static 是 optional) 12/19 20:39
8F:推 ric2k1:然後 lex 與 yacc 記得用 -o 輸出成 xxx.cpp 12/19 20:40
9F:→ Neilhahaha:還有想問要怎麼做出y.tab.h呢 他只會出現y.tab.c= ='' 12/19 20:41
10F:→ ric2k1:Oh, lex file 開始的地方要 #include <string>, of course 12/19 20:42
11F:→ ric2k1:yacc -d 12/19 20:42
12F:→ ric2k1:就會產生 y.tab.h 12/19 20:43
13F:→ ric2k1:看一下講義 LEX_FLAG = -Pcir YACC_FLAG = -d -p cir 12/19 20:43
14F:推 ric2k1:另外就是你可以用 "info" 這個指令來叫出 lex/yacc/bison 12/19 20:45
15F:→ ric2k1:flex 的 online manual. 像是 "info yacc" 12/19 20:45
16F:推 ric2k1:當然 google 一份 yacc/lex 的 tutorial 可能會比較清楚啦 12/19 20:46
17F:→ ric2k1:(有電子書可以下載) 12/19 20:46
18F:→ Neilhahaha:問題莫名的解決了 好像是我.y檔有錯的關係= ='' 12/19 20:59