새로운 프로그래밍 언어 만들기

2019년에는 여가 시간에 rumi라는 컴파일러 작업을 하고 있습니다(2주 정도 작업한 것 같습니다!). 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;
}

보시다시피 이 단계에서는 정말 기본적이지만 일상적으로 사용할 무언가를 구현할 계획이 있습니다. 이 프로그램은 C 함수를 호출하거나 C(또는 C를 사용할 수 있는 다른 언어)가 호출할 수 있는 함수를 제공하여 C 파일과 함께 연결할 수 있는 llvm-backend를 사용합니다.

이제 저는 이 언어에 포함할 기여자나 제안을 찾고 있습니다. 레포는 다음과 같습니다.


MCSH / 루미


루미 컴파일러





루미


Everything you possess of skill, and wealth, and handicraft, wasn't it first merely a thought and a quest? - Rumi


Rumi는 WIP 컴파일러입니다.
목표는 저수준 언어, 기능적 속성을 갖고, C와 연결 가능하고, 로컬 함수를 악몽으로 만들지 않고, 런타임 언어와 동일한 컴파일 타임 언어를 가지며, 프로그래밍을 만드는 데 중점을 둔 언어를 갖는 것입니다. 즐거운.
현재 버전은 자체적으로 작성되며 C++, flex 및 bison을 사용하여 기본 컴파일러를 생성한 다음 컴파일러가 자체적으로 컴파일되도록 실행self_compile.sh합니다. 이전의 반완성 버전은 old 분기에서 찾을 수 있습니다.


View on GitHub


그리고 이 게시물에 여러분의 아이디어를 댓글로 남겨주셔도 됩니다! 여러분이 관심이 있다면 영어 YouTube 비디오(또는 라이브 비디오 또는 블로그 게시물)에서 컴파일러 구조를 보여주고 일부 새로운 기능을 구현할 수도 있습니다.

제안이나 질문이 있으면 알려주세요!

좋은 웹페이지 즐겨찾기