所以我需要编写一个解析器(或模拟器)来获取一个输入文件,其中包含用我自己的伪代码(如语言)编写的简单代码,例如:
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 ...这不是一种任何形式的编程语言......
答案 0 :(得分:0)
看看PLY。 Python实现了辉煌的LEX / YACC。您可以肯定使用此工具为您的语言编写编译器或解释器。
答案 1 :(得分:0)
最有效的方法是实现Lexter,Parser和解释器。请参阅here for example,其中您可以使用LLVM和Python来创建具有LLVM IR代码生成和JIT支持的语言。 如果你想要更简单的东西,你可以简单地将你的源代码评估为Python语言,这样你就不必担心词法分析器,解析器,语法等......
答案 2 :(得分:0)