Programming languages 关于创建自己的小语言的问题

Programming languages 关于创建自己的小语言的问题,programming-languages,language-design,Programming Languages,Language Design,所以在你读这篇文章之前:请知道我只是个孩子,尽量不要对我太苛刻 所以我想获得一些经验,我想开始创造我自己的小语言。没有什么太好的。我已经决定使用java 我想创建一种解释语言,而不使用已经制作好的lexer和parser 我已经创建了一些东西,然后才有自定义的语法和东西,然后将被转储到C++,然后编译C++代码来给出结果。我的问题是:这真的可以称为一种语言吗?。只是用自定义语法编写代码,然后将代码更改为另一种语言,这样我就不必处理编译之类的事情了 第二个问题是,我将如何着手创建一些能够处理编译/

所以在你读这篇文章之前:请知道我只是个孩子,尽量不要对我太苛刻

所以我想获得一些经验,我想开始创造我自己的小语言。没有什么太好的。我已经决定使用java

我想创建一种解释语言,而不使用已经制作好的lexer和parser

我已经创建了一些东西,然后才有自定义的语法和东西,然后将被转储到C++,然后编译C++代码来给出结果。我的问题是:这真的可以称为一种语言吗?。只是用自定义语法编写代码,然后将代码更改为另一种语言,这样我就不必处理编译之类的事情了

第二个问题是,我将如何着手创建一些能够处理编译/口译的东西,而不是依赖于另一种语言和翻译之类的东西

编辑:这是我不久前创建的东西的一个例子,但当我了解它时,最近才添加到我的github中


我知道这不能称之为任何接近语言的东西。另外,你可以在爪哇/C++ + Python中给出建议,而不是其他语言。我只喜欢使用这3种语言,您可能需要为您的语言定义语法并编写语法。然后,您需要编写自己的词法分析器和解析器,并设计后端,即解释器和/或编译器

既然您了解lexer和parser的概念,我建议您阅读其他人的代码,看看他们是如何做到这一点的。我想到了三个资源,它们可能会为您提供如何继续的想法:

  • -作者建议使用一个简单的appproch来开发类似LISP的语言,并逐步指导您。有趣的部分:你选择你将使用的语言来开发你的MAL版本。尽管LISP可能不是你喜欢的东西,但每一步都是非常有用的,结果也非常惊人。甚至还有一个Java实现

  • -Rosetta代码提出了必须使用您选择的语言解决的挑战。在这一特殊挑战中,提交的备选语言并不多。顺便说一下,缺少java实现。既然您需要一个解析器,为什么不为EBNF(一种描述语言的语言)提供一个解析器呢

  • -这是一本很棒的在线书,在我们讲话时正在编写。作者涵盖了非常有趣和实用的主题。它以C++为基础语言,但我认为你会感到很自在。


  • 祝你好运

    有人吗?请回答:“这真的可以称为语言吗?”您提到的语言的编译器/解释器所做的只是将给定的语言翻译成机器代码,可能还会使用一些中间语言。所以我认为在技术层面上,你所描述的对我来说就像一种语言。人们是否会认为它是一种“真实”的语言是另一回事。Typescript被广泛认为是一种编程语言,例如它编译成JavaScript。