在BF变体Python 2.7.12中解析命令+输入

2024-04-23 20:54:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在修改一个Python BrainF*ck解释器来生成我自己的变体。我对Python没有太多经验,需要一些帮助。在code中,我将#和0-9放入过滤器并添加

if command == "#": cellptr =

添加到命令列表。我想让解释器读出#及其后的任何数字串。当字符串结束时,我希望将变量cellptr更改为字符串。我该怎么做?这样做的目的是使用该命令立即切换到任何单元格(即使它并不是真正保持BF的整个点)。示例代码:

+>++>+++#1

第一格加1,第二格加2,第三格加3,跳回第一格。你知道吗


Tags: 字符串命令目的过滤器列表ifcode经验
1条回答
网友
1楼 · 发布于 2024-04-23 20:54:35

您只需要将您的方法转换为一个通用算法:迭代代码字符串的其余部分以查找数字,直到到达数字的结尾或代码字符串的结尾。然后,将单元格指针设置到新位置:

if command == "#":
    num = 0
    codeptr += 1
    while codeptr < len(code) and code[codeptr] in '0123456789':
        num = num * 10 + int(code[codeptr])
        codeptr += 1
    cellptr = num
    codeptr -= 1

(我已经将codeptr减少了1,因为每次都会自动增加它。)

相关问题 更多 >