기본적으로 Bison은 공용체를 사용하여 의미 유형 값을 저장합니다. 노조는 포인터, 프리미티브, 배열 및 일반 오래된 데이터 이외의 필드를 지원하지 않기 때문에 shared_ptrs에 대한 원시 포인터로 끝났으므로 수동으로 자유롭게해야합니다.들소의 메모리 관리 향상
작동하는 동안 오류가 발생하기 쉽습니다. 나는 그것을 더 나은 것으로 대체하고 싶습니다. HereYYSTYPE
매크로를 사용하여 유니온을 대체 할 내 자신의 의미 유형을 제공 할 수 있다고 제안합니다. 그러나 제안 된 교체는 나에게 너무 장황하게 보인다.
더 안전한 바이슨 파서를 작성하는 데 도움이되는 몇 가지 예시 또는 참조 페이지 또는 다른 제안이 있습니까? 다른 파서 생성기로 전환하는 것을 고려하지 않습니다.
실제로 C++ 11에서는'union'에 저장 될 클래스에 대한 요구 사항이 꽤 완화되었습니다. –
'shared_ptr'유형의 필드를 갖기에 충분합니까? 커스텀 생성자를 가진 어떤 것도 컴파일 에러를 일으킬 것이라고 확신했습니다. –
저는 이제 사용자 지정 생성자가 허용되지만, IIRC에는 몇 가지 제한이 있습니다. 표준을 확인해야합니다. –