用Python创建DSL

2024-06-16 09:35:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有人知道如何为Python的DSL创建编辑器/gui。在

所以我有一个语法(基于textX项目)和一个解释DSL语法的类。但是我想为我自己的DSL语法创建一个自动完成和语法高亮的编辑器。在

有可能吗?在

我去了PySide,Qscintilla,但我有点迷路了,这似乎不太合适。 此外,DSL作为一个新概念是相当新的,所以网上几乎有0个文档,这就是我来这里的原因(你永远不知道!)在

编辑:^很抱歉,我把这句话惹恼了所有人。糟糕的是,我对DSL还很陌生,我想说的是,与Java相比,用Python开发DSL几乎什么都没有(使用Eclipse建模…)

赛亚!在


Tags: 项目文档概念编辑语法原因gui编辑器
2条回答

我同意@viraptor:

Writing a usable editor is not a trivial task. That's basically a months-long project on its own if you want anything more than trivial editing functions. Embeddable editors like Scintilla can help of course, but that's on you to figure out their API.

但是,最近在以下网站上介绍了QScintilla(PyQt5上的闪烁体)的API:

https://qscintilla.com/

网站上的文档对初学者很友好。在自己的PyQt GUI中创建一个基本编辑器不再是几个月的工作:-)

编写一个可用的编辑器不是一项简单的任务。如果你想要的不仅仅是简单的编辑功能,那基本上是一个长达数月的项目。当然,像spricella这样的嵌入式编辑器可以提供帮助,但这取决于您如何确定它们的API。在

我推荐一个不同的方向:既然你已经掌握了整个语法,就把自动完成和语法高亮显示作为一个现有编辑器的插件。通常这个功能被抽象得很好。你可以对vim、vscode或任何你想要的编辑器这样做。在

如果你真的想使用嵌入式编辑器,问一个关于这个部分的具体问题。记事本++以闪烁体为例,可以与几乎所有的语言一起工作。它很可能适合您的用例。在

总的来说:是的,这是可能的,因为任何事情都是可能的。如果你问一个关于在你的项目中加入Qscintilla的具体问题,你可能会得到更好的答案。在

PS.dsl存在了几十年。如果你找不到任何相关的东西,那就仔细看看。例如,SQL就是DSL。所有用LISP编写的东西几乎都是它自己的DSL。在

相关问题 更多 >