gpt4 book ai didi

c++ - Bison: what(): basic_string::_S_construct null 无效

转载 作者:行者123 更新时间:2023-11-30 01:50:19 26 4
gpt4 key购买 nike

所以我将 Bison 用于我正在进行的项目。我的 Bison 文件看起来与此类似:

%{
#include <iostream>
....
%}
%union
{
int intVal;
double dVal;
char charVal;
char* strVal;
}
%token ID NUMBER INT DOUBLE CHAR STR END
%type <strVal> ID
%type <strVal> INT DOUBLE CHAR STR END
%type <intVal> NUMBER
%type <strVal> dataType
%start program
%%
program: expressions
...
dataType: INT
| DOUBLE
| CHAR
| STR
varDef: dataType ID { std::cout << $1 << endl; }
....

当我编译并运行它并尝试通过它运行“int a”时,它将打印出 $2 的 varDef (“a”),但是当我告诉它打印 $1 时,我得到了

terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid

我也尝试过将我的 %union 更改为

%union
{
struct {
....
};
}

它并没有改变任何事情。知道我做错了什么吗?

最佳答案

您没有以下操作:

  dataType: INT
| DOUBLE
| CHAR
| STR

bison 中的默认操作是

{ $$ = $1 }

作为代币

%token ID NUMBER INT DOUBLE CHAR STR END

Have no type 你将没有值和类型的东西传递给类型为 *char 的东西

(我看到你现在已经解决了,但希望我的解释能解释原因)

关于c++ - Bison: what(): basic_string::_S_construct null 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com