我正在创建一个Brainfuck解析器(用BASIC方言)最终创建一个解释器,但我意识到它并不像我最初想的那样直截了当.我的问题是我需要一种方法来准确地解析Brainfuck程序中的匹配循环运算符.这是一个示例程序:
,>,>++++++++[<------<------>>-]
<<[>[>+>+<<-]>>[<<+>>-]<<<-]
>>>++++++[<++++++++>-],<.>.
Run Code Online (Sandbox Code Playgroud)
'['=循环开始
']'=循环结束
我需要记录每个匹配循环运算符的起点和终点,以便我可以根据需要跳转到源.有些循环是单独的,有些是嵌套的.
什么是解析这个的最佳方法?我想也许可以通过源文件创建一个2D数组(或类似的)来记录每个匹配运算符的开始和结束位置,但这看起来像是通过源的"来回".这是最好的方法吗?
更多信息:Brainfuck主页
编辑:非常感谢任何语言的示例代码.