나는 들소 코드 헤더 썼다 :헤더 파일을 Bison의 .tab.h에 저장하는 방법?
%{
#include "foo.h"
%}
을 그리고 헤더에 '푸'라는 이름의 구조체를 정의했다. Bison에서 토큰 유형으로 사용하고 싶습니다.
%define api.value.type union
%token <Foo*> bar
은 그 때 나는 bison.tab.h
파일을 생성 -d
옵션을 사용합니다.
bison -d bison.y
는 그러나 bison.tab.h
에는 #include foo.h
이없고, 노조 YYSTYPE을 정의하는 구조체 푸를 사용합니다. error: ‘Foo’ does not name a type
헤더 bison.tab.h
에서 파일이나이 경우 다른 솔루션을 포함 할 수있는 방법이 있나요 :이 프로그램을 컴파일 할 때
//bison.tab.h
union YYSTPE {
Foo* bar;
...
};
그것은 오류가 발생?
bison.y를 공유 할 수 있습니까? –
'% {'와'%}'사이에 넣은 것은 Bison에 의해 처리되지 않고, 생성 된 C 또는 C++ 소스 파일에 바로 복사됩니다. 그런 식으로 헤더 파일에 Bison 특정 명령문을 넣을 수는 없습니다. –
"* 그러나 bison.tab.h에 #include foo.h가 없습니다. *"<= 귀하의'foo.h'와'bison.y'를 보여주십시오. 왜냐하면 현재 주어진 것으로부터 이것이 완료된 방법입니다. – dhke