3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作言語の公開(実装途中)

3
Last updated at Posted at 2026-02-01

とりあえず今できてる段階のをGitHubのリポジトリにプッシュしました
言語名はAegenです

2026/2/1: Aegen v0.1.0-scrap3

AegenからAegithに名称変更しました

2026/2/6: Aegith v0.1.0-scrap

前回の記事:

Aegenについて

影響された言語 Rust, Go, Erlang
文法に影響された言語 Go, Rust, F#
パラダイム マルチパラダイム
ライセンス GPL-3.0 license

バージョン管理について

v1.0.0までは正式リリースはしません

-scrap
「正常に動作する」 or 「言語として実行できる」までこれがつきます。通常は連番です
(最初の1は省略します)
-prev
v1.0.0以降に破壊的変更がある場合、先行でリリースするバージョンです

命名由来

私がシマエナガが好きと言うわけで、学名(Aegithalos Caudacus Japonicus)から名付けました

文法

パッケージ類

パッケージ

package hoge::main

GoベースのRust風です

インポート

import aegen::std::fmt

こちらもGoベースのRust風です

関数定義

func double(i: i32) i32 { ... }

Goベースですが、引数はRustです

pubを前につけることで公開ができます

戻り値の型を省略でき、型推論が働きます

変数定義

let input = fmt.readln()

Rustと変わりません。Rust同様、ブロックも式なので、ブロックを使えます

構造体定義

struct Dog { ... }

構造体名の後にimpl、フレーム名と続けることでフレームを実装できます
この文法は変更される可能性があります

フィールド定義

val hoge = 0

F#のトークンを採用しました。デフォルトで不変です

関数定義同様、前にpubを付けて公開できます

関数定義

関数定義の書き方と変わりません

フレーム定義

frame Animal { ... }

インターフェイスですが、状態を持つことができます

フィールド定義

val hoge = 0

構造体のフィールド定義と変わりませんが、pubは使えません

このフレームを実装する構造体は必ずそのフィールドを実装しなければいけません

関数定義

func greet() { ... }

関数定義と変わりませんが、pubは使えません

前にabsを付けることで、このフレームを実装する構造体に実装を要求します

数値、文字、文字列の3つがあります

数値

書き方は.NETのと同じです。128ビットは独自です

y i8
s i16
l (省略可) i32
L i64
LL i128

uy u8
us u16
u u32
UL u64
ULL u128

文字

.NETと同じです

文字列

.NETと同じです

最後に

いつか、セルフホストができることを目指しています

まだ、全然実装できていませんが、これから頑張っていきます!

3
1
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?