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