c中的brainf * ck解释器 - 处理括号循环

时间:2015-04-13 22:54:48

标签: c brainfuck putchar

我正在用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

查看整个代码

0 个答案:

没有答案