我只是想知道你们中是否有人知道如何从yyin一次读取整个文件,而不是在找到它时读取和解析每一行。
提前致谢, 弗朗西斯
编辑: 默认情况下,Bison会分析/执行文件的每一行,因为无论下一行是什么,都可以看到它,例如,如果我想用“my”语言创建一个我要解析的变量,我会这样做:
var myvariable = 1
如果在下一行我想创建另一个变量,我会这样做:
var variable2 = 123
要实际创建变量,我会将它们的值插入到符号表中(我的符号表只是一个数组)。
所以我想要发生的是,当Bison看到变量的行时,我希望它将它插入到符号表/数组中,这样我就会在创建新变量时自动递增:
symbolTable[i] = 1; /* Value for myvariable */
symbolTable[i] = 123; /* Value for variable2 */
但实际发生的事情是当我使用上面的代码将元素插入到数组中而不是具有包含2个元素的数组时,我最终得到一个包含1个元素的数组,如下所示:1123
再次感谢, 弗朗西斯
编辑2: 自动增量实施:
int i;
for(i = 0; i < var_count; i++) {
symbolTable[i] = var_value;
}
变量var_count将通过计算读取整个文件后的变量数量并通过函数从语法传递var_value来获得。
再次感谢, 弗朗西斯