2015-03-31 67 views
2

我正在將一箇舊的語法移植到檸檬中,並且我已經在頭文件中定義了所有的終端符號;我想用這些值而不是parser.h中生成的那些值:這是可能的嗎?
覆蓋parser.h完全沒用,因爲這只是內部發生的事情的一面鏡子,匹配的值將保持相同。
(由於檸檬股大量的代碼與野牛我認爲,野牛解決方案將解決檸檬過問題)使用檸檬分析器和自定義令牌值

回答

2

隨着野牛,您可以手動在%token指令,宣佈他們將值分配給令牌(%token TOK 263 , 例如)。但是,這個選項在檸檬中沒有(據我所知)。

無論如何,上述內容並不能真正滿足您的請求,因爲它不允許您從外部頭文件中讀取令牌值。這對解析器生成器來說不是一個簡單的要求。爲了構建分析表,解析器生成器(無論是野牛還是檸檬)必須知道與每個標記關聯的值,解析標題以提取該信息的任務遠遠超出解析器生成器的複雜性;它需要一個嵌入式C語言分析器。

我建議只讓解析器生成器生成頭文件,然後用它來代替現有頭文件中的定義。唯一的成本(afaics)是您需要重新編譯項目中引用標記值的任何部分,這通常僅限於詞法分析器。