gpt4 book ai didi

c - 如何从 lex/yacc 生成不同的 yyparse 函数以用于同一程序?

转载 作者:行者123 更新时间:2023-12-03 17:44:24 27 4
gpt4 key购买 nike

我想从 lex/yacc 生成两个独立的解析函数。通常 yacc 给你一个函数 yyparse() ,你可以在你需要做一些解析时调用它,但我需要有几个不同的 yyparses,每个都与不同的词法分析器和语法相关联。手册页似乎建议使用 -p(前缀)标志,但这对我不起作用。我从 gcc 得到错误,表明 yylval 没有被正确地重新标记(即它声称没有定义几个不同的标记)。有谁知道生成这些单独函数的一般过程?

谢谢

最佳答案

前段时间我遇到了同样的问题,最后我写了下面的头文件:

#ifndef RENAME_FLEX_H
#define RENAME_FLEX_H

#define yy_create_buffer scan__create_buffer
#define yy_delete_buffer scan__delete_buffer
#define yy_init_buffer scan_init_buffer
#define yy_load_buffer_state scan_load_buffer_state
#define yy_switch_to_buffer scan_switch_to_buffer
#define yyin scan_in
#define yyleng scan_leng
#define yylex scan_lex
#define yyout scan_out
#define yyrestart scan_restart
#define yytext scan_text
#define yy_flex_debug scab_flex_debug
#define yywrap scan_wrap
#define yyrealloc scan_realloc
#define yyfree scan_free
#define yy_flush_buffer scan_flush_buffer
#define yypush_buffer_state scan_push_buffer_state
#define yypop_buffer_state scan_pop_buffer_state
#define yy_scan_buffer scan_scan_buffer
#define yy_scan_string scan_scan_string
#define yy_scan_bytes scan_scan_bytes
#define yyget_in scan_get_in
#define yyget_out scan_get_out
#define yyget_leng scan_get_leng
#define yyset_text scan_set_text
#define yyset_in scan_set_in
#define yyset_out scan_set_out
#define yyget_debug scan_get_debug
#define yyset_debug scan_set_debug
#define yylex_destroy scan_lex_destroy
#define yyalloc scan_alloc
#define yyget_text scan_get_text

#endif

并将其包含到 .l 中,因此在我的 .c 文件中,我可以使用 scan_ 前缀符号作为第二个扫描器,而不是yy-前缀

关于c - 如何从 lex/yacc 生成不同的 yyparse 函数以用于同一程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480895/

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