在 C++ Bison 中重新定义位置类型?
Redefine location type in C++ Bison?
通过确保以下四个字段可用,Bison 的标准版本使得重新定义位置类型变得非常简单:
customsourcelocation.h
struct CustomSourceLocation
{
int first_line;
int first_column;
int last_line;
int last_column;
};
parser.y
...
%define api.location.type {CustomSourceLocation}
...
%code requires {
#include "customsourcelocation.h"
}
...
然而,C++ 版本的位置似乎更高级,因为构成位置类型的结构也由多个 position
对象组成。
任何人都可以提供一个重新定义 C++ Bison 解析器的位置类型的基本示例,以便位置数据对象独立于 Bison,因此可以从任何文件中包含而无需包含任何 Bison 生成的代码?
提前致谢。
感谢rici 指出答案。
使用 %locations 选项时将生成一个 location.hh 文件,可以根据需要对其进行修改和包含。
通过确保以下四个字段可用,Bison 的标准版本使得重新定义位置类型变得非常简单:
customsourcelocation.h
struct CustomSourceLocation
{
int first_line;
int first_column;
int last_line;
int last_column;
};
parser.y
...
%define api.location.type {CustomSourceLocation}
...
%code requires {
#include "customsourcelocation.h"
}
...
然而,C++ 版本的位置似乎更高级,因为构成位置类型的结构也由多个 position
对象组成。
任何人都可以提供一个重新定义 C++ Bison 解析器的位置类型的基本示例,以便位置数据对象独立于 Bison,因此可以从任何文件中包含而无需包含任何 Bison 生成的代码?
提前致谢。
感谢rici 指出答案。 使用 %locations 选项时将生成一个 location.hh 文件,可以根据需要对其进行修改和包含。