gpt4 book ai didi

c - 加载外部文件 flex bison - yyin?

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:55 26 4
gpt4 key购买 nike

我正在用 flex + bison 编写一种基本语言,用于我自己的个人研究/运行简单的脚本以获得乐趣。

它通过命令行获取用户输入,对其进行解析,然后执行所需的结果。我想添加功能加载文件。

例如,当“load file 'somefile.src'”文件被加载并自动解析时,解析器会切换回等待命令行输入。

我无法理解这些文档,我很迷茫。作为一个整体,我对 flex、bison 和 C 还是个新手,这无济于事。

我正在关注此 pdf:http://epaperpress.com/lexandyacc/ (使用复杂的计算器作为骨架并在其上添加功能)以及浏览 bison 文档 http://www.gnu.org/software/bison/manual/bison.html .

如有任何建议,我们将不胜感激。

最佳答案

输入处理由 flex 完成,因此您需要阅读 flex manual了解详情。

关于多个输入缓冲区的部分(上面链接)有用于处理“include”类结构的示例代码。事实上,有两个示例实现;一种使用内置缓冲区堆栈(推荐),另一种使用显式缓冲区堆栈。

其实并不复杂。要开始读取新文件,您需要做的就是:

yyin = fopen(filename, "r");
if ( !yyin ) /* Handle the error */
yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE ));

您在 EOF 规则中弹出缓冲区状态:

<<EOF>> { yypop_buffer_state();
/* Make sure we stop if the EOF is the original input. */
if (!YY_CURRENT_BUFFER) { yyterminate(); }
}

关于c - 加载外部文件 flex bison - yyin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31839746/

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