域特定语言,标准文件格式

时间:2012-06-07 20:11:32

标签: python xml json standards dsl

XML是一种用于存储文档的良好文件格式:具有元数据的内容。 JSON是一种用于存储数据的良好文件格式。

是否有类似的文件格式标准,擅长编码操作?换句话说,是否有一种标准的文件格式可以用于编码小型轻量级域特定语言?我想到的是简单的DSL,它只包含字符串数据和不超过十几个简单的命令。我的语言包括以一种非常简单的方式调用一个接一个的命令(没有条件或循环)。

目前,我已经使用XML来编码一系列操作,其中每个标记代表不同的命令。 SAX解析器将每个元素调度为函数调用。这很难看;只是感觉不是一个优雅的解决方案。

理想情况下,我将使用python而不是编写自己的解析器...试图获得使用已建立的标准文件格式的好处。一个后备是使用python本身,但当然我更喜欢一个语言中立的标准,如果要找到它。

3 个答案:

答案 0 :(得分:1)

如果XML完成了这项工作,但可读性是一个问题,那么YAML可能是一个很好的用例。 (Python support)。

关于“XML角度括号税”

有一个很好的CodingHorror post

答案 1 :(得分:0)

Qt的QML框架通过扩展DSL development元素集以包含由C ++对象支持的自定义元素,提供了QML language的备用路径。 PySide提供了Python绑定。

即使QML主要用于UI开发,QML也可以扩展为表示任意对象树。

例如,这个snippet定义了一个新的QML元素(PieChart),然后在QML系统中注册并用于QML语言。

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtDeclarative import *

class PieChart (QDeclarativeItem):
   ... 

PieChart已在QML系统注册:

 qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart');

QML(DSL)端,我们可以导入和使用PieChart:

import Charts 1.0
import Qt 4.7

Item {
    ...

    PieChart {
        id: aPieChart
        anchors.centerIn: parent
        width: 100; height: 100
        name: "A simple pie chart"
        color: "red"
    }
 ...

答案 2 :(得分:0)

最后,我使用S表达式在Python中实现了一个简单的解释器。解析器很容易在网上找到(大约半页代码),并且通过使用函数装饰器可以简化语言的实现功能。