是的,我正在制作Brainfuck解释器,但我还需要根据其代码创建AST。
基本操作(+-。,>
现在,我认为可以使用字符串中的括号位置在它们之间创建链接。但这是一个问题-如何创建匹配的括号对?

这是我的代码示例:

    private readonly List<int> rightBracketsIds;
    private readonly List<int> leftBracketsIds;

    private List<Tuple<int, int>> lsTuples;


我通过使用特殊方法来获得括号的位置,并将其放置在相应的列表中。但是我应该用什么来创建它们呢?
喜欢

++[>+[>++<-]<-]++[>++<-]>.


磅:2、5、17

RB:11、14、23

所以我需要获取元组 。

好吧,我可以看到右方括号的位置必须大于左方括号的位置:通过查看LB 17和RB 14,我们可以说它们没有链接在一起。但是我认为有办法使它变得更好。

是的,任何答案都将有所帮助。对不起,我的英语不好。

附言我已经考虑过堆栈了,但是我不知道如何在问题中使用它。
P.P.S.我终于找到了有用的东西:How to find the matching pair of braces in a string?

如果可以解决问题,请在此处发布解决方案。

最佳答案

这是一种“不是很有效但是很直接”的方法。

对于每个左括号X,通过执行以下操作查找其对:


声明一个变量bracketCount
循环浏览X之后的字符
如果看到另一个左括号,请将bracketCount加1
如果看到另一个右括号,请检查bracketCount是否为0,如果是,则找到与X对应的右括号!如果不是0,则从bracketCount减去1。

关于c# - C#:Brainfuck支架查找器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46619584/

10-09 07:26