我有一个 GUI 程序,它使用 bison 来解析文件(包含 IC 的引脚连接列表)。输入文件就像->
3 = NAND2(1, 2)
6 = NAND2(4, 5)
8 = NAND2(9, 10)
11 = NAND2(12, 13)
并且(简化的)语法就像->
start : spec { cout << "Parse Complete!"; }
;
spec : '{' expr_list '}'
;
expr_list : expr_list expr | expr
;
expr : INT '=' FUNC '(' args ')' { /*WANT TO INSERT ACTION HERE */ }
;
在提到的地方,我想执行一个操作——在我的容器(a map
)中插入解析的值。bison 生成的文件是.cpp
,但实际上它是 C 否则。我可以轻松地包含所需的头文件。我也可以简单地调用非成员函数(如cout
)。
我的问题是-如何在(容器类型的)对象中插入值?我可以在语法文件中创建一个对象,但是如何返回它呢?
其他方法是在 GUI 代码中创建一个对象(容器类型),然后将其传递给解析器。
请告诉任何方法如何实现。