我继承了一堆类似这样的测试脚本:
// make connection on standard port (FD) ot 11 02 00 0F FD // wait for ACK in 12 ackValue // wait for connection confirmation in 13 ackValue 09 88 //send 5 bytes of arbitary data ot 21 ackValue 05 01 02 03 04 05
等等。在
我想写我自己的simpiler测试脚本,它是上面的一层,可以被解析为自动生成上面的脚本,这样我的脚本看起来像这样:
^{pr2}$因此,当MAKE_STANDARD_CONNECTION被解析时,它将生成前一个脚本中的前六行。如果标准端口从0xFD更改为其他端口,这将允许我快速更新所有脚本。。。在
我猜有一些工具可以实现这一点,但是它们是什么呢?我是一个程序员,所以如果有必要,我可以用python作为我选择的语言来编写这个代码。在
谢谢你的帮助
巴里
pyParsing和{a2}是用Python编写解析器的两个比较流行的库,您可以创建自己的语法,等等
或者,可以通过编写生成所需输出的简单函数,在纯python中执行此操作:
对于这种简单的测试,您不需要任何特殊的解析器。只需使用Python。一个简单的解决方案可以这样开始:
运行
^{pr2}$script_one()
将生成包含以下内容的文件:我建议您将其实现为Python之上的内部DSL。做到:
它是真正的Python代码,可以自动生成您的专有脚本。Python可读性很强,编写起来也很舒服,通过将其作为一个内部DSL来实现,您可以使用Python的所有功能。例如,可以执行以下操作:
^{pr2}$其中
somefunc
是任意计算。要在外部DSL(即您自己的脚本语言)中实现这一点,您必须实现循环和更多的构造。Python免费为您提供这些功能,这只是一个小的功能示例。在如果这听起来很有趣的话,google对“外部DSL”和“内部DSL”进行了一点比较,以了解我在说什么。在这个世界上,有足够多奇怪、专有、实施不善的“脚本语言”。生另一个孩子通常是个坏主意。在
相关问题 更多 >
编程相关推荐