我正在尝试使用Flex& amp;野牛,现在,我正在建立AST。
我已经在头文件和源文件中编写了所有类(非常难看,但是当我没有这样做时我有包含错误),因此我将它包含在我的.y野牛文件中。
当我从我的文件中指定具有类类型的%union字段的类型时,问题就出现了。
当我写MyClassType field;
时,编译器给我错误,因为我试图给字段一个抽象类类型(这是正常的,这是我期望编译器做的),当我写作时MyClassType* field;
(我真正想做的),编译器说他不知道一个名为MyClassType的类型。
我觉得很奇怪的是,他知道一种类型的存在,但不存在指向这种类型的指针。 此外,我在语法规则中创建了我的类的实例,并且我没有任何错误(尝试在%union中没有我的类的字段,因此一个错误不会隐藏另一个错误)。所以只有在%union中才能使用我的类。
在我的.y文件中,我的类的标题包含在第一个%{%}之间,%union在前一个块之后声明。 我为flex / bison项目单独编译了我的类的源文件,我没有任何错误。
所以,我想要了解的是为什么我不能在野牛的%联盟中使用我的课程?
提前感谢您的回答,
亲切地说,Jaxon