Python 特定于域的语言,标准文件格式
XML是存储文档的良好文件格式:包含元数据的内容。JSON是存储数据的良好文件格式 是否有一个类似的文件格式标准,它擅长于编码操作?换句话说,是否有一种标准的文件格式适合于编码小型轻量级领域特定语言?我想到的是简单的DSL,它只由字符串数据和不超过12个简单命令组成。我的语言包括以非常简单的方式(没有条件或循环)一个接一个地调用命令 目前,我使用XML对一系列操作进行编码,其中每个标记表示不同的命令。SAX解析器将每个元素作为函数调用分派。这是很难看到的;只是感觉这不是一个优雅的解决方案Python 特定于域的语言,标准文件格式,python,xml,json,standards,dsl,Python,Xml,Json,Standards,Dsl,XML是存储文档的良好文件格式:包含元数据的内容。JSON是存储数据的良好文件格式 是否有一个类似的文件格式标准,它擅长于编码操作?换句话说,是否有一种标准的文件格式适合于编码小型轻量级领域特定语言?我想到的是简单的DSL,它只由字符串数据和不超过12个简单命令组成。我的语言包括以非常简单的方式(没有条件或循环)一个接一个地调用命令 目前,我使用XML对一系列操作进行编码,其中每个标记表示不同的命令。SAX解析器将每个元素作为函数调用分派。这是很难看到的;只是感觉这不是一个优雅的解决方案 理想情
理想情况下,我将使用python,而不是编写自己的解析器……试图从使用已建立的标准文件格式中获益。一个退路是使用python本身,但如果要找到一个与语言无关的标准,我当然更喜欢它。如果XML可以做到这一点,但可读性是一个问题,那么它很可能是一个很好的应用案例。()
关于“XML角括号税”有一个很好的解释,如果XML可以做到这一点,但是可读性是一个问题,它很可能是一个很好的使用案例。()
<> P.> Q>框架的QML框架提供了一种替代的路径,通过扩展元素集来包含C++对象支持的自定义元素。Python绑定可与一起使用 尽管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');
在(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"
}
...
的QML框架提供了一种替代的路径,通过扩展元素集来包含由C++对象支持的自定义元素。Python绑定可与一起使用 尽管QML主要用于UI开发,但QML可以扩展为表示任意对象树 例如,这定义了一个新的QML元素(PieChart),然后在QML系统中注册并在QML语言中使用PieChart已在QML系统中注册:import sys from PySide.QtCore import * from PySide.QtGui import * from PySide.QtDeclarative import * class PieChart (QDeclarativeItem): ...
在(DSL)端,我们可以导入并使用PieChart:qmlRegisterType(PieChart, 'Charts', 1, 0, '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" } ...
最后,我使用S表达式用Python实现了一个简单的解释器。解析器很容易在网上找到(大约半页代码),使用函数装饰器可以简化语言函数的实现。最后,我用Python实现了一个简单的解释器,使用S表达式。解析器很容易在网上找到(大约半页代码),使用函数装饰器可以简化语言函数的实现。文本文件怎么样?S表达式最接近DSL的潜在通用格式。我想我想知道为什么不能使用JSON?层次结构可以是包含字符串数据的命令。您能告诉我们如何在XML中使用它吗?使用一些非常基本的Lisp方言(使用宏!)的S表达式应该可以。基本上,您描述的是一种简单的脚本语言。有许多脚本语言可供选择,包括Python。如果你想让它更通用,我不明白你为什么不能只使用JSON列表,按照惯例,列表中的第一个元素是函数,列表中的其他元素是参数。文本文件怎么样?S表达式最接近DSL的潜在通用格式。我想我想知道为什么不能使用JSON?层次结构可以是包含字符串数据的命令。您能告诉我们如何在XML中使用它吗?使用一些非常基本的Lisp方言(使用宏!)的S表达式应该可以。基本上,您描述的是一种简单的脚本语言。有许多脚本语言可供选择,包括Python。如果你想让它更通用,我不明白为什么你不能只使用JSON列表,因为列表中的第一个元素是函数,列表中的其他元素是参数。是的,DSL的一部分实用功能是它应该很容易阅读和理解;亚姆会朝这个方向努力。这里的许多其他建议解决了编码问题,但并没有真正使语言更易于阅读。谢谢。是的,DSL的部分效用在于它应该非常容易阅读和理解;亚姆会朝这个方向努力。这里的许多其他建议解决了编码问题,但并没有真正使语言更易于阅读。谢谢