1

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

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

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

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

4

3 回答 3

1

If XML does the job, but readability is an issue, it might well be a good use case for YAML. (Python support).

There's a good CodingHorror post concerning the "XML angle-bracket tax"

于 2012-06-07T20:18:03.033 回答
0

Qt 的 QML 框架通过扩展QML 语言元素集以包含由 C++ 对象支持的自定义元素,为DSL 开发提供了另一种途径。Python 绑定可用于PySide

尽管 QML 主要用于 UI 开发,但 QML 可以扩展为表示任意对象树。

例如,这个片段定义了一个新的 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"
    }
 ...
于 2012-06-12T21:41:39.890 回答
0

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

于 2017-10-02T13:39:26.703 回答