2011-04-15 82 views
6

如何將一個附加參數(不是YYSTYPE類型的令牌小數)傳遞給yypush_parse()函數?野牛 - 推送和純解析器的附加參數

解析器確實折返,但是這一個aditional的變量是我需要我的解析器集成在應用程序的線程安全至關重要的(這是一個PHP擴展,所以我們談論TSRM)。

我不能只是擺脫這個參數,因爲在行動代碼中我要調用將以用戶空間可訪問的形式生成AST的函數。

我試圖破解周圍YYPUSH_DECLS並儘量可以作爲聲明函數而言,但幾千交通線下來自帶的yypush_parse實施,我看不到任何方式覆蓋函數簽名哪裏開始執行yypush_parse

YYPARSE_PARAM當解析器不是推一個(據我可以告訴),但對我來說,我需要它是因爲事情我必須在處理循環做推,詞法後,僅用於然後再將新令牌添加到解析堆棧。

所以我想知道是否有%directive或有什麼可以幫助。

另一方面,我認爲YYPARSE_PARAM應該儘量使用,不管它是什麼類型的解析器。可惜它不是。

回答

0

%parse-paramYYPARSE_PARAM已棄用,因此不應使用。

+0

不幸的是,'%parse-param'用於'yyparse()'函數,而不是'yypush_parse()'。 – 2011-04-17 13:55:51

+0

你在說什麼?它適用於我,野牛2.4.3 – Flavius 2011-04-17 15:21:15

+0

好的:讓我們修改我的評論 - 遺憾的是,文檔沒有提及'%parse-param'可以與'yypush_parse()',AFAICS一起使用。你的經驗證據表明它可以被使用;我們或許應該向Bison團隊留言,說明文檔中缺少這一點。 – 2011-04-17 17:54:49