🐡

Rustで言語を自作してみた

2024/09/04に公開

なんか作りたくなったので作りました

言語について

言語名はPrimo、ChatGPTに決めてもらいました(多分他のソフトウェアと名前は被ってないはず)
一応初心者が書くことを想定して作ってます
インタプリタ形式の動的型付け言語で、Rustで実装してます
https://github.com/Netetra/primo-lang.git

programs/以下にコード例があります

使用したcrate

  • rust-peg
    • 構文のパースからAST生成までをしてます
  • rstest
    • テスト書くとき使いました

文法

リテラル

bool型のリテラル

true false

int型のリテラル

10

str型のリテラル

"Hello World!"

条件式

==!=しか実装していません
Python同様andornotが使えます

変数定義

最近の言語に多いlet文を採用しました

let x = 10;

代入

x = 20;

print文

print "Hello World!", "\n";

,区切りで複数値を出力できます

if文

if hoge {}
elif huga {}
else {}

loop文

Rustから輸入してきました
continueはキーワードが長く、間違いが発生しやすそうなのでnextにしてます

loop {
  next;
  break;
}

関数定義

これもRustから輸入してきました
JSのようにfunctionみたいな長いキーワードは間違いが起きやすいので

fn add(a, b) {
  return a + b;
}

実装予定の文法

struct

こういう感じになる予定

struct Person {
  name,
  age
}

コメント

一番重要な気がする

# コメントはPythonと同じ文法にする予定
GitHubで編集を提案

Discussion