我正在尝试编写一个可以解析我键入的一些命令的小型编译器。
我尝试解析的命令是:
create class something = create class do_something ;
我的代码将是这样的:
grammar : my_grammar
{
list<Class1 *> *obj = new list<Class1 *>;
obj->push_back($1);
}
my_grammar : my_definition SEMICOLON
{
report("something detected!");
$$ = $1;
}
my_definition : CREATE CLASS class_name EQU class_expression
{
$5->setClassName(*$3);
$$ = $5;
}
class_expression : CREATE CLASS operand_name
{
$$ = new OperandClass();
$$->setOperationType("createClass");
$$->setOperandName(*$3);
}
但是,当我尝试在其他地方调用解析器时,我无法获得Class
我之前定义的。
我想解析器一定有问题,并且已经用 GDB 做了一些调试。但我就是无法进入功能,也无法正确push_back()
打印信息。obj
所以,我想知道是否有一种方法可以让我在使用 GDB 时$$
获得价值。$1
只需输入p $$
将打印其他内容。