2010-12-23 54 views
1

請我試圖從我的(.l)文件中將匹配字符串的yyleng傳遞給(.y)文件。這是問題的一個樣本:如何將Lex匹配字符串的Yyleng發送給Yacc?

在lex文件:

<state1>.+ { fprintf(yyout, "%d", yyleng); } 

在Yacc的文件:

/*我需要知道用來接收特定的方法yyleng到yacc文件。我應該使用全局變量嗎?或者有處理這個問題的具體方法? */

在此先感謝您的幫助! 〜任何建議,高度讚賞。

+0

見附近複製[問題](http://stackoverflow.com/questions/4514075/how-to-pass-the- yytext-from-lex-file-to-yacc)(詢問`yytext`而不是`yyleng`): – 2010-12-23 13:27:04

回答

3

yyleng是一個全局變量;在你的語法文件中聲明並使用它。

Flex使用:

typedef size_t yy_size_t; 
extern yy_size_t yyleng; 

萊克斯用途:

extern int yyleng; 
+0

非常感謝您的幫助!請如果我需要了解更多關於使用yytype,yyleng和其他人的信息,你是否推薦我任何特定的免費在線資源(特別是如果有初學者的話)? – CompilingCyborg 2010-12-23 13:49:30

1

定義你自己yytype並通過任何價值超過它

+0

感謝您的幫助! 〜我會盡我所能在我自己身邊進行研究。 – CompilingCyborg 2010-12-23 13:50:54