当前位置:  开发笔记 > 编程语言 > 正文

在python中为DSL编写编译器

如何解决《在python中为DSL编写编译器》经验,为你挑选了3个好方法。

我正在用python编写一个游戏,并决定为地图数据文件创建一个DSL.我知道我可以用regex编写自己的解析器,但我想知道是否有现成的python工具可以更容易地做到这一点,比如在PHP引擎中使用的re2c.

一些额外的信息:

是的,我确实需要DSL,即使我没有,我仍然需要在项目中构建和使用它的经验.

DSL只包含数据(声明?),它不会被"执行".大多数行看起来像:

SOMETHING: !abc @123 #xyz/123

我只需要阅读数据树.

Matthew Trev.. 12

pyparsing给我留下了深刻的印象.作者Paul McGuire在python list/comp.lang.python上很活跃,并且对任何有关它的查询都非常有帮助.



1> Matthew Trev..:

pyparsing给我留下了深刻的印象.作者Paul McGuire在python list/comp.lang.python上很活跃,并且对任何有关它的查询都非常有帮助.



2> Ned Batcheld..:

有很多Python解析工具:http://nedbatchelder.com/text/python-parsers.html



3> S.Lott..:

这是一种非常有效的方法.

abc= ONETHING( ... )
xyz= ANOTHERTHING( ... )
pqr= SOMETHING( this=abc, that=123, more=(xyz,123) )

声明.易于解析.

和...

它实际上是Python.一些类声明和工作已经完成.DSL实际上是类声明.

重要的是DSL只是创建对象.定义DSL时,首先必须从对象模型开始.稍后,您在该对象模型周围添加了一些语法.您不是从语法开始,而是从模型开始.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有