將lex,yacc(flex,bison)與MFC結合起來使用!

近來開始用lexbison來寫一些東東,這兩者結合起來使用是相當的方便。用lexbison做完核心的分析處理之後,想必大家都會把這些嵌入到自己的工程裏面,和其他的功能結合起來。但是,往往此時會出現許多的錯誤。

       lex,bison
默認生成的都是C的源程序,而且二者都有自己的語法規則。 有時會與VC有些衝突,但是,只要修改部分定義之後這些問題都是可以解決的。

1yyerror()函數,此函數可以直接寫在yacc文件的最後。但是在VC裏面需要預先聲明,也就是說必須把yyerror()的聲明部分放在yacc文件的第一部分。
2isatty()函數,沒有用MFC之前,根本就沒有注意這個東東,lex,bison生成的console程序跑得很好,但是加了MFC之後這個函數突然跳出來,說是沒有定義。angry_smile.gifangry_smile.gif結果只好把<io.h>yinclude進去了。具體什麼原因,本人也不是很清楚。
3
,數據交換的問題。lex,yacc默認的輸入是鍵盤。因此還要爲lex創建一個新的buffer。這裏可以建立新的文件作爲buffer,也可以用字符串yy_switch_to_buffer(yy_scan_string(m_stredit.GetBuffer(m_stredit.GetLength())));結果的輸出可以用一個全局的字符串。

這樣基本上就可以在MFC中使用lex,bison給我們帶來的方便了。

以上是本人的一點點體會,錯誤和不當之處在所難免,見笑了!<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章