gpt4 book ai didi

c++ - Bison 似乎无法正确识别 C 字符串文字

转载 作者:行者123 更新时间:2023-11-30 02:13:14 25 4
gpt4 key购买 nike

我的问题是我正在尝试运行一个我使用 flex-bison 扫描仪-解析器编码的问题。我的程序应该做的是接受用户输入(在我的例子中,查询我正在设计的数据库系统)、lex 和解析,然后执行相应的操作。实际发生的是我的解析器代码没有正确解释我提供给它的字符串文字。

这是我的代码:

130 insertexpr :  "INSERT" expr '(' expr ')'
131
132 {
133 $$ = new QLInsert( $2, $4 );
134 }
135 ;

然后我的输入,按照“查询:”提示:

Query: INSERT abc(5);
input:1.0-5: syntax error, unexpected string, expecting end of file or end of line or INSERT or ';'

现在,如果我从第 130 行的 parser.yy 代码中删除“INSERT”字符串文字,程序就可以正常运行。事实上,在存储输入数据(即“abc”和整数 5)后,它会正确返回给我。

起初,我认为这是字符编码的问题。 Bison 代码需要使用相同的编码进行编译和运行,这应该不是问题,因为我是从同一个终端编译和运行的。

我的系统详细信息:

Ubuntu 8.10 (Linux 2.6.24-16-generic)
弹性 2.5.34
Bison 2.3
海合会 4.2.4

如果您需要更多信息或代码,请告诉我!

最佳答案

这是一个典型的错误,如果你使用 flex 将你的输入词法化为标记,你不能将解析器中的文字字符串称为文字字符串,而是使用标记来表示它们。

有关详细信息,请参阅 this similar question

关于c++ - Bison 似乎无法正确识别 C 字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/699054/

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