gpt4 book ai didi

syntax-error - 来自lex和yacc的运行时 “syntax error”

转载 作者:行者123 更新时间:2023-12-03 08:07:16 30 4
gpt4 key购买 nike

我不知道为什么我得到这些结果。

++
+add
+syntax error 2

++
+add
+syntax error 4

++是我的输入,并且lex会回显每个字符,并且每当获得+时yacc打印就会添加。这给了我其他所有的错误。不管输入如何,如果在每个+上按回车键,都会得到相同的结果。

莱克斯
%{
#include "y.tab.h"

int chars = 0;
%}
%%
"+" {ECHO; chars++; return ADD;}
. {ECHO; chars++;}
\n {ECHO;}
%%

yacc
%{
#include <stdio.h>
extern int chars;

void yyerror (const char *str) {
printf ("%s %d\n", str, chars);
}
%}

%token ADD
%%
symbol : ADD {printf ("add\n");}
;
%%

int main () {
while (1) {
yyparse ();
}
}

最佳答案

您的语法仅接受由单个标记+组成的“句子”。当您键入第二个+时,会引起语法错误;您的语法不允许先加ADD再加ADD。 +之后的下一个标记必须是EOF,语法才能接受您的输入。 (由于.\n规则,您可以在代码中键入各种其他内容,但输入中只能有一个+。)

关于syntax-error - 来自lex和yacc的运行时 “syntax error”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375960/

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