|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
仔細讀過了flex的docu,但是還不是很清楚,雖然從上面看到如果要讀取buffer而不是FILE*的話,一般使用yy_scan_string(),yy_scan_bytes()還有就時yy_scan_buffer()等函數,但是不是很清楚到底如何使用,不知道哪位大大能給出一個sample,flex的代碼,簡單複雜都可以,非常感謝。 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
到論壇中查找一下,好像有人談論過的,但是不是在該版。 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
up一下,沒找到相關內容,還是希望能有人出頭指點一下。 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
up一下,沒找到相關內容,還是希望能有人出頭指點一下。 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
回去幫你看吧
我買了一本LEX 2。0書
只是一直沒有好好看 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
你說的是O'Reily的那本?那本我已經看過兩遍了,也寫了一點東西,只是他裡面重新定義讀取buffer的方式是通常lex的做法,而flex正好不同。不過還是很感謝,如果有什麼消息的話,麻煩你發站內消息給我,謝謝 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
OK |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
缺省 lex 代碼從標準輸入讀取其輸入,但我們希望遊戲能夠分析內存中的字符串。使用 flex 很容易就能做到,只要重新定義 lex 源文件頂部的宏 YY_INPUT:
extern int eval_getinput(char *buf, int maxlen);
#undef YY_INPUT
#define YY_INPUT(buf, retval, maxlen) (retval = eval_getinput(buf, maxlen))
我們將 eval_getinput() 的實際代碼寫入一個單獨文件,使它變得非常靈活,這樣它可以從文件指針或內存中的字符串中獲取輸入。為了使用實際代碼,我們首先建立一個全局數據源變量,然後調用 yacc 函數 yyparse(),此函數會調用輸入函數並對它進行分析。 |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
謝謝,我在IBM的develope的頁面上曾經看到過這段話,但是這個問題我是解決了,又遇到其他的問題了,嘿嘿,在考慮如何保證重入安全,我不希望他只能夠做到單線程的。正在考慮中。。。
還是非常感謝你的熱情幫助~~~ |
如何使用flex讀取內存中的緩衝區而不是一個FILE*?
多線程安全我也在關注
當然看看LEX也沒有仔細看
我想FLEX應該保證多線程安全了吧 |
| |