用Python解析伪代码/语言

1 投票
2 回答
1452 浏览
提问于 2025-04-16 11:52

我需要写一个解析器(或者模拟器),它可以读取一个输入文件,这个文件里写的是我自己设计的伪代码,比如:

a = 5
b = 5 * a
[FOR 10]
    b = b * 5
[ENDFOR]
[IF b>30]
    a = a + 3
[ENDIF]

这个伪语言只支持整数变量,能进行基本的运算(加、减、乘、除),还有简单的for循环和if语句。我需要构建一个解析器,最后能给出变量a和b(或者代码中用到的其他变量)的最终值。

我在想要不要用XML来实现这个功能,用标签来模拟循环和if语句,但我不太确定这样做是否合适(或者是否是最有效的方式)。有没有什么建议?

快速补充一下^^:这并不是关于我自己的编程语言……这是一个更大项目的一部分……我需要一种简单的方法来评估像例子中那样的小段代码,并在模拟后获取使用的变量的状态……所以我想用XML……这并不是打算成为任何形式的编程语言……

2 个回答

0

看看这个 PLY。这是Python中非常棒的LEX/YACC实现。你绝对可以用这个工具为你的编程语言写一个编译器或解释器。

0

很多内容可能已经可以通过pyparsing的wiki示例来实现,比如这个,或者这个,后者使用了更新的operatorPrecedence辅助方法。

编辑:之前的PyParsing Wiki链接已经失效,但你可以在这个GitHub仓库找到另一个wiki:https://github.com/pyparsing/pyparsing/wiki

撰写回答