我创建了一种编程语言并在我的计算机中编写。这是一个实验性的非专业编程语言,我为了好玩而创建。
语言需要最重要的东西,编译器。
将源代码转换为C / ++并调用GCC是一个好主意吗?
我的语言看起来像C ++和Java,没有解析器就很难转换。
我的目标不是优化任何东西,也不为每个平台生成二进制文件。如果我生成一个C源代码,我可以为许多平台编译它并使用GCC优化。
我不知道可以帮助我的工具,我知道名字的工具是yacc和llvm,但我不知道他们如何帮助我。
乐趣的第一部分是编程语言的设计,第二部分的乐趣是运行时细节的实现。我认为解析器实现不是很有趣。
由于
答案 0 :(得分:4)
要对抗Mehrdad,将您的语言转换为C语言是一个好主意。许多语言编译器都编译为C语言,将其用作“便携式程序集”。现在,为GCC创建一个前端是个好主意,但它在初始复杂性方面提高了标准。创建C代码比GCC的前端更简单。
或者,就此而言,将其转换为您认为适合的任何语言,无论您喜欢什么。例如,我编写了编写Java代码的编译器。
你语言的语法部分可能不是很有趣,但它可能是你的第一个挫折点。因此,关注其他语言的作用以及查看他们的语法是明智的。考虑一些简单的Pascal递归式解析器,如果您认为您的语言可以使用它。或者寻找Yacc和ANTLR语法。
大多数人发现最令人沮丧的是表达式。
a + b * ( c - sqrt(12 / 4) + sin(30))
许多人在使用表达式时遇到问题。在让表达式工作之后,其余部分可以很容易地落到实处(假设使用Algol / C语言与您正在处理的其他语法形式相比)。
答案 1 :(得分:2)
答案 2 :(得分:2)
如果你真正的目标 - 并且记住,我的意思是,你认为工作的目标很有趣;-) - 是语言设计,那么我会说完全可以避免写完你自己的全部目标 - 打击编译器。唯一的问题是,将你的语言写成C(++)翻译是否容易得多?它可能比将前端写入gcc或LLVM更容易(尽管如果你的目标不同,这些都是严肃的方法)。
我的建议是从C / C ++翻译开始。