将尝试解释这是最好的方法。我目前正在编写一个解析器,它接受Literals,其中Literal可以是Int / Real / String等......
上面的链接显示了通过调试执行的代码部分,后面是当前使用的变量。你可以看到'字面'没有任何东西。难道它不显示Int Literal类中的值吗?我还附加了Literal和Int Literal类文件。
答案 0 :(得分:0)
new ASTNodeInt(currToken)
为您提供指向堆上ASTNodeInt
的指针,而不是“实际”ASTNodeInt
。您可以通过执行literal->intlit
来使用指针来获取值。你的调试器看起来是正确的,它说literal
是ASTNodeLiteral *
(一个指针),它的值是一个内存地址。
此外,您的代码似乎泄漏了内存 - 您创建了一个新的ASTNodeInt
,然后创建另一个新代码并返回该代码,而不是在您创建的原始代码上调用delete
。