我目前正在使用野牛和flex作爲標記器的verilog分析器。我的語法工作正常,現在我的目標是將收集的數據存儲在數據庫中。 (如果你不知道verilog是什麼,它並不重要,但你可以在這裏找到信息:http://www.verilog.com/VerilogBNF.html)獲取字符串作爲標記值的Bison/Flex分析器
我目前一直在獲取令牌值。我的語法主要由字符串和一些數字組成。
我瀏覽互聯網和發現,導致我寫恩這樣的規則法有用的東西:
[A-Za-z_]+[A-Za-z0-9_$]* {
lline = yylineno;yylval.str = strdup(yytext);
return K_IDENTIFIER;
}
在我的野牛輸入文件.Y我做了一些調整,這是
#define YYSTYPE char*
....
%union {char* str;
double val;
}
%token<str>K_IDENTIFIER
...
beginning of the grammar rules
現在,當我有一個文法規則,其中有一個K_IDENTIFIER,如
module : K_MODULE K_IDENTIFIER list_of_ports_parameters K_POINTVIRG
{cout << "the value of K_IDENTIFIER is :"<< $2.str << endl;}
list_of_module_itemsE
K_ENDMODULE
fdsfds
正如你所見,我想打印K_IDENTIFIER的值(這是一個字符串)。這只是幫助我理解背後的機制的一個例子,因爲稍後我將創建一些C++對象並根據我讀的內容填充信息。
如果您需要更多的代碼來查看我的問題,請隨時詢問。 謝謝
我敢肯定你的意思是用GNU-Flex和不Adobe Flex的標記這一點,所以我重申了它。 – JeffryHouser 2011-04-28 13:13:07
是的,謝謝你的錯字修復 – djfoxmccloud 2011-04-28 14:27:11
我清理你的格式有點。如果您有大量代碼,請將其縮進四個空格。這比嘗試使反作用力工作好得多。 – 2011-04-28 20:21:30