gpt4 book ai didi

parsing - Xtext 可以用于解析通用编程语言吗?

转载 作者:行者123 更新时间:2023-12-03 12:49:06 26 4
gpt4 key购买 nike

我目前正在开发一种通用的基于代理的编程语言(它的语法会受到 Java 的启发,我们也在这种语言中使用对象)。

自项目开始以来,我们对使用 ANTLR 的事实持怀疑态度。或 Xtext .那时我们发现 Xtext 正在实现 ANTLR 功能的一个子集。所以我们决定为我们的语言使用 ANLTR,从而失去了为我们的语言免费拥有一个成熟的 Eclipse 编辑器的可能性(Xtext 提供了如此好的特性)。

然而,据我所知,今年夏天 Xtext 项目完成了 big step forward .引用链接:

What are the limitations of Xtext?

Sven: You can implement almost any kind of programming language or DSL with Xtext. There is one exception, that is if you need to use so called 'Semantic Predicates' which is a rather complicated thing I don't think is worth being explained here. Very few languages really need this concept. However the prominent example is C/C++. We want to look into that topic for the next release.



这在 Xtext documentation 中也得到了加强。 :

What is Xtext? No matter if you want to create a small textual domain-specific language (DSL) or you want to implement a full-blown general purpose programming language. With Xtext you can create your very own languages in a snap. Also if you already have an existing language but it lacks decent tool support, you can use Xtext to create a sophisticated Eclipse-based development environment providing editing experience known from modern Java IDEs in a surprisingly short amount of time. We call Xtext a language development framework.



如果 Xtext 摆脱了过去的限制,为什么仍然无法为最著名的编程语言(Java、C# 等)找到复杂的 Xtext 语法?

在 ANTLR 网站上,您可以找到大量此类语法示例,而对于 Xtext 而言,我能找到的唯一示例是文档中报告的示例。那么,也许 Xtext 仍然不成熟,无法用于实现通用编程语言?我对此有点担心......我不会开始在 Xtext 中重写语法,然后认识到它不适合那个。

最佳答案

我认为没有人实现 Java 或 C++,因为它需要大量工作(即使使用 Xtext),并且现有的工具和编译器都非常出色。
但是,您可以看看 Xbase 和 Xtend,这是我们随 Xtext 提供的表达式语言。它是用 Xtext 构建的,并且很好地证明了您可以用 Xtext 构建什么。我们在大约 4 个人月内完成了这项工作。

我在 Xtend 上做了几个截屏视频:

http://blog.efftinge.de/2011/03/xtend-screencast-part-1-basics.html
http://blog.efftinge.de/2011/03/xtend-screencast-part-2-switch.html
http://blog.efftinge.de/2011/03/xtend-screencast-part-3-rich-strings-ie.html

请注意,您可以简单地将 Xbase 表达式嵌入到您的语言中。

关于parsing - Xtext 可以用于解析通用编程语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5632262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com