gpt4 book ai didi

bison - 我如何说服 Bison 解析文件的一部分?

转载 作者:行者123 更新时间:2023-12-02 22:35:09 27 4
gpt4 key购买 nike

如果有一个表单的输入文件:

BEGIN
stuff....
END

BEGIN
stuff ...
END

我的 .y 文件是这样的

%token BEGIN
%token END
%start begin

begin: BEGIN stuff END

我想做的是重复调用 yyparse,解析单个 BEGIN/END,直到 eof。

第一次调用 yyparse 报告:

syntax error, unexpected BEGIN, expecting $end.

这是有道理的; bison 想要解析整个文件。有没有办法让 Bison 成为$end 的定义更灵活?

最佳答案

最简单的方法是在 .y 文件的顶部添加(一对)产生式:

input: begin | input begin;

现在 yyparse 将解析多个输入。如果你真的想多次调用 yyparse,你可能会逃避:

begin: BEGIN stuff END { YYACCEPT; } ;

YYACCEPT 是一个特殊的内置函数,它会导致 yyparse 立即返回 0(在进行任何需要的内部清理之后)。我说“可能”,因为这只有在 bison 使用默认减少(无前瞻)减少 begin 时才有效。如果这是 begin 的唯一规则并且 begin 未在识别它需要先行的上下文中使用,情况就是如此。

关于bison - 我如何说服 Bison 解析文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564563/

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