在Python中解析伪代码/语言

时间:2011-02-15 16:57:26

标签: python xml parsing

所以我需要编写一个解析器(或模拟器)来获取一个输入文件,其中包含用我自己的伪代码(如语言)编写的简单代码,例如:

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

因此伪语言仅支持整数变量,基本操作(+, - ,/,*),基本for循环和基本if语句。我需要构建解析器,最终将传递a和b的最终值(或代码中使用的任何其他变量)。

我正在考虑尝试在XML中执行此操作,因此我模拟循环和if with标记,但我不确定这是否是正确(或最有效)的方法。有什么建议吗?

快速编辑^^: 这不是我自己的编程语言......它是一个更大的项目的一部分...我需要一种简单的方法来评估像示例一样编写的小代码片段,并在模拟之后获取所使用的变量的状态...这就是为什么我想使用XML ...这不是一种任何形式的编程语言......

3 个答案:

答案 0 :(得分:0)

看看PLY。 Python实现了辉煌的LEX / YACC。您可以肯定使用此工具为您的语言编写编译器或解释器。

答案 1 :(得分:0)

最有效的方法是实现Lexter,Parser和解释器。请参阅here for example,其中您可以使用LLVM和Python来创建具有LLVM IR代码生成和JIT支持的语言。 如果你想要更简单的东西,你可以简单地将你的源代码评估为Python语言,这样你就不必担心词法分析器,解析器,语法等......

答案 2 :(得分:0)

大部分内容可能已经使用pyparsing wiki中的示例实现,例如this onethis one,它们使用更新的operatorPrecedence辅助方法。