创建一种新的编程语言 Rumi

2025-06-07

创建一种新的编程语言

鲁米

2019 年,我利用业余时间开发了一个名为 的编译器(我估计花了大概两个工作周的时间!)rumi。它是一种通用语言,其灵感源自 Johnatan Blow 的编译器视频。这对我来说是一次很棒的体验,我偶尔会用我的母语(波斯语)直播这个编译器的编程过程。

现在编译器已经达到了我可以实际编写程序的状态,但距离我计划的目标还有很长的路要走。下面的程序展示了我们能做的大部分功能:

/*
Comments and /*nested*/ comments are a thing
*/

ptinf(T: string, c: ... any) -> int; // We just declare the signature, it is implemented in a c file

MyStruct: Struct{
  id: int;
  age: u8;
}

main := ()-> int{
  a : int;
  a =1;

  b: int = 2;

  c := a + b;

  printf("The value of c is %d\n", c); // 3

  arr : int[10];
  mys : MyStruct;
  mys.id = 2;
  arr[0] = mys.id;

  printf("The id is %d, and the 0th element is %d\n", mys.id, arr[0]); // 2, 2

  // We also have pointers:

  p : *int;
  p = &c;

  *p = 2;

  printf("The value of c is %d\n", c); // 2

  return 0;
}
Enter fullscreen mode Exit fullscreen mode

如你所见,目前这个阶段它还很基础,但我计划实现一些日常会用到的东西。该程序使用 llvm-backend,允许我将其与 C 文件链接在一起,既可以调用 C 函数,也可以提供供 C(或任何其他可以使用 C 的语言)调用的函数。

现在,我正在寻找贡献者或建议,希望能够将一些内容添加到这门语言中。代码库如下:

GitHub 徽标 MCSH /鲁米

鲁米编译器

鲁米

该项目不再维护。

我发现很难为它分配时间,但它已经达到了作为概念证明的目的:程序可以在编译时使用相同的语法改变静态编译器的行为。

你拥有的一切技能、财富和手艺,最初不都只是一种想法和一种追求吗?——鲁米

Rumi 是一款低级编译器,具有函数式特性,可以与 C 语言链接,不会使本地函数成为噩梦,并且拥有与运行时相同的强大编译时语言。Rumi 的最终目标是让编程变得快乐。

当前版本使用 C++ 编写,之前的版本分别使用 rumi 和 C++ 编写。我们使用 LLVM 进行编译。

语言文档可以在这里找到。






你也可以在这篇文章下评论你的想法!如果你们感兴趣,我甚至可以用英文 YouTube 视频(或者直播视频或博客文章)来展示编译器的结构,甚至还可以实现一些新的功能。

如果您有任何建议或问题请告诉我!

文章来源:https://dev.to/mcsh/creating-a-new-programming-language-56db
PREV
你应该知道的 7 个 JavaScript 数组方法
NEXT
来自伊朗的消息,请求帮助创建更好的代理