0

我正在用 C 语言编写一个笨拙的解释器。

括号 ( []) 循环似乎无法正常工作。

编辑:此代码现在正在运行

这是控制括号循环的代码:

  case '[': // start bracket loop
    if(!*(cells + i))
    {
      bracket++;
      while(bracket)
      {
        n++;
        if(bf[n] == ']')
          bracket--;
        else if(bf[n] == '[')
          bracket++;
      }
    }
    break;
  case ']': // end bracket loop
    if(*(cells + i))
    {
      bracket++;
      while(bracket)
      {
        n--;
        if(bf[n] == '[')
          bracket--;
        else if(bf[n] == ']')
          bracket++;
      }
    }
    break;

该程序正在读取包含 bf 代码的字符串。对于每个字符,调用 switch 语句的适当部分(每个命令都有大小写)。

当调用 ']' 命令时,程序惯于返回到循环的开头。

谢谢你的帮助!

编辑:在修复了下面指出的一些错误后,我更新以显示实际问题。我在 Ubuntu 14.04 上使用 gdb 调试器。

编辑(再次):该程序现在正在运行,并在下面可用。

编辑(再次(再次)):正如我在下面的评论中所说,最终有各种各样的错误导致问题,所以我没有一个答案来回答我自己的问题。如果有人感兴趣,我将其作为处理括号循环的一种方法的示例。

完整的代码可以在 GitHub 上查看https://github.com/underscorejho/bfi

4

0 回答 0