我有三个程序目前正在使用 YACC 文件来进行配置文件解析。为简单起见,它们都读取相同的配置文件,但是,它们每个都唯一地响应键/值(因此相同的 .y 文件不能用于超过 1 个程序)。不必%token
为每个令牌重复声明会很好 - 如果我想添加一个令牌,我必须更改 3 个文件?现在是哪一年??
这些方法不起作用或给我带来了问题:
C 预处理器显然是在我们对文件进行 YACC 之后运行的,因此
#include
对于一个#define
或其他宏将不起作用。我尝试使用以下脚本编写类似的内容
sed
:
REPLACE_DATA=$(cat <file>)
NEW_FILE=<file>.tmp
sed 's/$PLACEHOLDER/$REPLACE_DATA/g' <file> > $NEW_FILE
但是,它似乎是在删除我的换行符,REPLACE_DATA
然后不替换实例$PLACEHOLDER
而不是替换 variables 的内容PLACEHOLDER
。
YACC 中是否有真正的包含机制,还是我缺少其他解决方案?这是一场维护噩梦,我希望其他人也遇到过类似的情况。提前致谢。