gpt4 book ai didi

c - Bison/Yacc 中的 for 循环语义

转载 作者:行者123 更新时间:2023-12-04 05:05:16 27 4
gpt4 key购买 nike

我正在尝试使用 flex 和 bison 编写自己的脚本语言。我有一个基本的解析器,我想添加一个与 C 语言 for 语句非常相似的 for 语句。我不清楚如何编码与 for 语句相关的操作

假设我对 'for' 语句有以下结果:

forStatement: FOR '(' expr ';' expr ';' expr ')' statements END; {}

我不清楚在与此制作相关的操作中该做什么。

直觉上,我明白我应该在与前一个语句相关的操作中做一些事情,例如:
evaluate($3);
while(evaluate($5)) { execute($9); evaluate($7); }
evaluate($7);

其中评估和执行是两个 C 函数。

所以我有两个问题(假设为与语法产生式相关的 Action 编写 C 代码):
  • “评估”的任务是什么。我的意思是,考虑到表达式的值在循环的每一步都可能发生变化,我如何在每个循环中评估表达式?
  • “执行”的任务是什么。我的意思是,考虑到每个语句在循环的每一步都有不同的结果,我如何评估 for 循环中的语句。

  • 三个表达式 'expr' 的值在运行时发生变化,对于 for 主体内的语句也是如此。

    最佳答案

    看你的两个问题,你好像忽略了需要一个执行引擎(一种软件CPU)。这个引擎需要记住变量的状态,返回循环的“地址”,......(取决于选择的实现方法)。

    所以解析只是第一步。考虑为每个语句和表达式创建一个数据结构,并让这些由这个引擎执行。

    看看stack-based systems .

    关于c - Bison/Yacc 中的 for 循环语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600056/

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