inflearn logo
知識共有
inflearn logo

自分だけのプログラミング言語作り

この講義は、自分だけのプログラミング言語を作りたい人のために制作された講義です。

19名 が受講中です。

難易度 初級

受講期間 無制限

Rust
Rust
Rust
Rust

受講後に得られること

  • コンパイラ

  • 言語設計

  • レクサーの実装

  • パーサーの開発

  • ASTの作成

  • コンパイラの製作

  • LLVM IR 生成

  • プログラミング言語の作成

  • システムプログラミングの基礎

  • コード生成器の開発

  • Rust 実習プロジェクト


自分だけの言語、実行まで自作できるだろうか?

言語は文法を決めるだけでは完成しません。
トークンを分割し、パーサーと抽象構文木を経てコンパイラで実行される流れを直接実装してこそ、コードが言語になります。


最初はレクサーがソースコードをトークンに分割する過程を追っていきます。数値や演算子、変数や出力文がどのように分解されるのかを実際に確認します。

次はパーサーと抽象構文木を作成し、コードの構造を構築します。Rustで簡単な言語を実装し、コンパイラと出力機能まで繋げます。

最後には、対象となるユーザーや文法、型システム、エラー処理方式を自ら決定します。他人が作った言語を使うことから一歩進んで、自分自身の設計をコードに移します。

コンパイラやパーサーの構造に馴染みがなくても大丈夫です。
小さなトークン一つから始めて、実際に実行される言語を完成させる経験が、皆さんの次なる挑戦になります。


レクサー・パーサーからトークンと抽象構文木、
Rustで実際にコンパイラを実装します。

ぼんやりとしたアイデアを実行可能な文法に変え、
自分だけの言語を作る開発者へと進みます。




この講義が終わる頃、あなたは


プログラミング言語の全体的な流れをひと目で設計できるようになります。

  • ソースコードがレクサーでトークンに分割され、パーサーを経て抽象構文木が作成された後、実行コードに変換される過程を段階別に繋げて理解できるようになります。新しい言語の構造に出会ったとき、各構成要素の役割を自ら説明し、言語構造ダイアグラムとして整理することができます。






✔️

コード一行が言語として誕生する過程を自ら設計します

アイデアを文法にし、
実行可能な言語として完成させる

レクサーとパーサーの役割から、抽象構文木とインタプリタ・コンパイラの違いまで、その流れを繋げて理解します。Rustでトークンの定義、構文解析、変数と演算子を処理する構造を実装し、漠然としていた言語制作の過程を具体的なステップへと変えていきます。

トークンの分解から出力命令の実装まで

文字列出力コードをトークンに分割し、数値と演算子を抽象構文木として構成した上で、コンパイラで実行されるようにします。自ら文法スタイルや型システム、エラー処理方式を定め、自分だけの簡単な言語コードの作成まで行います。

Rustの実習コードと言語設計資料

講義で扱うトークンの定義、レクサー、パーサー、抽象構文木(AST)、コンパイラ実装コードを基に、実習を進めることができます。言語の対象と哲学、文法、デバッグの方向性を整理するミッションを通じて、その後の機能を拡張するための設計基準も用意します。


📚

Rustでレクサーからコード生成まで、自分だけの言語を直接完成させてみてください

Section 1

プログラミング言語の概念と制作動機

プログラミング言語の定義と構成要素を確認し、自ら言語を設計・実装する理由と学習の方向性を理解します。


Section 2

言語実装の全体構造

レクサー、パーサー、抽象構文木の役割を学び、インタプリタとコンパイラの間の違いを比較します。ソースコードが実行ファイルや実行結果に変換される全体の処理フローを段階別に把握します。


Section 3

Rustで簡単な言語を実装する

Rustの開発環境を構築した後、トークンの定義とレクサー、数値・演算子・変数を処理するためのパーサーと抽象構文木を実装します。その後、コンパイラと出力機能を完成させ、簡単なプログラミング言語の実行過程を実習します。


セクション 4

言語の哲学と設計の決定

ターゲットユーザーと言語の哲学に基づき、文法スタイル、型システムの導入有無、エラー処理とデバッグ方式を設計します。主要な設計上の選択を整理し、一貫性のある言語仕様を構想します。


Section 5

簡単なプログラミング言語制作の実習

これまで学習した言語設計と実装の原則に基づき、自分だけの簡単な言語コードを作成します。言語の文法と核心的な動作を直接定義し、制作過程を体験します。


Section 6

自分だけの言語を作る意味

プログラミング言語を自ら作ろうとする動機と、創作の意味を振り返ります。言語設計が思考回路や問題解決の手法に与える影響について考えてみます。


このような方々の悩みを
解決できます!

📌

プログラミング入門を終えたジュニア開発者

数字と演算子を処理する小さなプログラムは作ったことがあるが、ソースコードがトークンと構文木を経て実行される過程がまだ馴染みのない方
Rustの基礎文法を活用してレクサー、パーサー、抽象構文木を直接実装し、コンパイラの全体的な流れを体で覚えたい方

📌

Rustベースのシステム開発者

RustとC言語でメモリとデータ構造を扱ったことはあるが、自作の文法を実行可能なコードに変換するプロジェクトが不足していた方
変数、演算子、出力文を処理する簡単な言語を設計し、コンパイラとコード生成プロセスを実装しながらシステムプログラミングの能力を拡張したい方

📌

プログラミング言語の研究・開発志望者

パーサーとコンパイラの構造を学んだことはあるが、言語の文法や型システム、エラー処理方式を自身の基準で設計してみた経験が不足している方
言語の対象ユーザーと哲学を決めた後、文法を具体化し、自分だけの簡単な言語コードを作成しながら言語制作プロジェクトの出発点を作りたい方




受講前のご注意事項


実習環境

  • Windows、macOS、Linuxをサポートしています。
    Rustの開発ツールをインストールして使用します。

  • テキストエディタとターミナルが必要です。
    メモリは8GB以上を推奨します。

前提知識および注意事項

  • RustまたはC言語の基礎が必要です。
    変数、関数、データ型を理解している必要があります。

  • レクサー、パーサー、抽象構文木を扱います。
    コード作成の経験があれば実習に有利です。

学習資料

  • 講義スライドのPDFを提供します。
    文法設計とコンパイラ構造を復習します。

  • トークン、パーサー、コンパイラの実習資料を活用します。
    簡単な言語の制作工程全体を辿ります。


こんな方に
おすすめです

学習対象は
誰でしょう?

  • プログラミング言語を作りたい人

  • Rust、Cで基礎は身につけたけれど、挑戦課題が必要な人

  • パーサー、レクサー、コンパイラの構造に関心がある人

前提知識、
必要でしょうか?

  • Rust

  • 基礎レベルのプログラミング経験

こんにちは
lunastevです。

キャリア認証

Waveプログラミング言語の開発者

Wave GitHub

GitHub

カリキュラム

全体

22件

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価を受けていない講座です。
みんなの役に立つ受講レビューを書いてください!

lunastevの他の講座

知識共有者の他の講座を見てみましょう!

新規会員登録で25%OFF

¥18,787

25%

¥25,047