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

问题描述 投票:0回答:1

所以在您阅读本文之前:请知道我只是个孩子,请不要对我太苛刻。

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

我想创建一种解释性语言而不使用已经制成的词法分析器和解析器。

我之前已经创建了一些具有自定义语法和内容的东西,然后将其编译为c ++,然后将编译该c ++代码以得到结果。我的问题是:这真的可以称为一种语言吗?只需使用自定义语法编写代码,然后将该代码更改为另一种语言,这样我就不必处理编译和其他工作。

第二是我将如何创建一些东西来进行这种编译/解释,而不是依赖于另一种语言以及转译和其他东西。

编辑:这是我前一段时间创建的示例,但最近在我了解它时才添加到我的github中。 https://github.com/SupremeDeity/MTL

我知道这不能被称为任何一种接近语言的东西。您也可以在java / c ++ / python中给我一些建议,除此之外,别无其他语言。我只喜欢和那3个人一起工作

programming-languages language-design
1个回答
0
投票

您可能需要为您的语言定义语法并为其编写语法。然后,您将需要编写自己的词法分析器和解析器并设计后端,即解释器和/或编译器。

由于您了解词法分析器和解析器的概念,因此建议您阅读其他人的代码,看看他们是如何做的。我想到了三种资源,它们可以为您提供有关如何进行的想法:

1)MAL(使自己轻声疾呼)[https://github.com/kanaka/mal]-作者建议一种简单的方法来开发类似LISP的语言,并逐步指导您。有趣的部分:您选择用于开发MAL版本的语言。即使LISP可能不是您的本事,但每个步骤都非常有用,其结果令人赞叹。甚至还有一个Java实现。

Rosetta代码-解析EBNF [https://rosettacode.org/wiki/Parse_EBNF]-Rosetta代码显示必须使用您选择的语言解决的挑战。在这个特殊的挑战中,提交的替代语言并不多。顺便说一句,缺少Java实现。而且由于您将需要一个解析器,为什么不使用EBNF(一种描述语言的语言)呢?

工艺翻译[https://craftinginterpreters.com/]-这是一本great在线书,在我们讲话时正在写。作者涵盖了非常有趣和实用的主题。它使用c ++作为基本语言,但我想您在那里会觉得很自在。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.