我有三個程序當前正在使用YACC文件來執行配置文件分析。爲了簡單起見,它們都讀取相同的配置文件,但是,它們每個都唯一地響應鍵/值(所以相同的.y文件不能用於多於一個的程序)。如果我想添加一個令牌,我必須更改3個文件,這將是很好的,不必重複每個人的%token
聲明 - 如果我想添加一個令牌,哪一年呢?爲#define
或其他宏將無法正常工作YACC文件是否有文件包含機制?
了C預處理明顯運行後,我們YACC文件,所以
#include
:這些方法不工作或者是給我的問題。
我試圖腳本了類似的東西使用
sed
:
REPLACE_DATA=$(cat <file>)
NEW_FILE=<file>.tmp
sed 's/$PLACEHOLDER/$REPLACE_DATA/g' <file> > $NEW_FILE
但是似乎它剝我的換行符REPLACE_DATA
和那麼不會替換0的實例而不是替換變量PLACEHOLDER
的內容。
YACC中是否存在真正的包含機制,還是我還缺少其他解決方案?這是一個維護噩夢,我希望別人遇到類似的情況。提前致謝。
[btyacc](http://www.siber.com/btyacc/)支持'%include'指令。 –
您需要引用REPLACE_DATA以使其不被剝離。你不能用一個單引號''替換變量,但必須使用雙引號'''。我認爲這不會有幫助。你可以嘗試'cat> output << EOF \ n preample \ n $(echo 「$ REPLACE_DATA)\ npostamble」'或使用另一種腳本語言 –
Nice Chris。[bisoncpp](http://bisoncpp.sourceforge.net/bisonc++05.html#INCLUDE)。 –