我正在用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
查看整个代码