お知らせ 【技術コミュニティ運営者の皆さま】成長し続けるエンジニアを支援する「Forkwell」と「connpass」が連携し、connpass上でイベントを開催する技術コミュニティを2020年3月末まで支援いたします。詳しくはこちら by Forkwell

このエントリーをはてなブックマークに追加

11月

9

プログラミング言語作成ハンズオン Vol.2

~自分だけのプログラミング言語を作ってみよう〜

Organizing : kmizu

Hashtag :#langimpl2
Registration info

参加枠

Free

FCFS
8/8

チューター枠

Free

FCFS
0/1

Description

イベントについて

このイベントはプログラミング言語を作るためのハンズオン企画です。

皆さんは、プログラミング言語を作ったことがあるでしょうか。もし無いとしても、普段プログラミング言語を作る必要はないので無理はないことだと思います。しかし、プログラミング言語を作ることによって、実際のプログラミング言語がどのように作られているかについてイメージを持つことができます。また、プログラミング言語を学ぶ際にも、プログラミング言語の処理系がどのように動いているかを知ることは有意義だと考えています。

そのような趣旨で数年前、プログラミング言語作成のハンズオンを行いました。色々な課題はありましたが、プログラミング言語を作ることの楽しさが多少でも伝わったのではないかと思います。

一方で、1日のハンズオンで、字句解析/構文解析とインタプリタの作成を同時に行うのはやや難しい、ということを実感しました。この反省を踏まえ、今回のプログラミング言語作成ハンズオンでは、プログラミング言語の構文木は利用者側で組み立ててもらうことにして、処理系としては構文木のインタプリタを作ること(時間があれば型チェックも)にしぼって学んでもらう予定です。


想定するプログラミング言語:

  • 基本単位が式である(値を返す)
  • 条件分岐(if)、ループ(while)を表現する式が存在する
  • 次の演算子を持つ
    • 整数の加減乗除(+,-,*,/)  
    • 整数の比較(<,<=,>,>=)
    • 論理和(||)、論理積(&&)、否定(!)
  • 標準出力に文字列や数値を出力する機能を持つ
  • 次のデータ型とリテラルを持つ
    • 整数型と整数リテラル
    • 真偽値型と真偽値リテラル
    • 文字列型と文字列リテラル
  • (オプショナル)関数定義と呼び出し
  • (オプショナル)静的な型

参加資格:

  • Javaでプログラムが書ける
  • 木構造を扱うプログラムを書ける
  • プログラミング言語が動作する仕組みを理解したい
  • 休日を丸一日使っても良い

プログラム:

  • 11:00 開場
  • 11:10~11:15 会場案内 @kmizu
  • 11:15〜12:00 言語処理系作成のキホン: @kmizu
  • 12:00〜13:10 昼食休憩
  • 13:10〜18:30 言語作成ハンズオン: @kmizu
    • インタプリタの作成
    • (オプショナル)関数定義と呼び出しを追加
    • (オプショナル)静的型の追加

参加費:無料


集合場所

?11:00までに下記の場所に集まってください。@kmizuが会場に案内 します。遅れた人は、@kmizuまでその旨メンションいただければ 迎えに行きます。

アクセス

アクセス


その他

  • 貴重品は各自で管理してください
  • 会場は飲食可能です
  • 会場内には自販機がないため、昼休憩などのときに飲み物を買っておくことをお勧めします

当日までの準備作業

  • Java開発環境(AdoptOpenJDK 8)のインストール

こちらのサイトから、OpenJDK 8 (LTS) -> HotSpotと選択して、ダウンロード・インストールをお願いします。その他のディストリビューションでもおそらく動くかと思いますが、確認を取っていません。

  • Apache Maven 3のインストール

こちら からダウンロード・インストールをお願いします。インストールが正常に行えたら、

$ mvn

というコマンドが使えるようになっているはずです。Mac OSの場合、brew install mavenだけでいけるかもしれません。

  • 本ハンズオンで使うベース言語nubのclone、動作確認(現時点で未実装の部分があるため、コンパイル可能であることのみ確認)

本ハンズオンでは、一からプログラミング言語を作るのではなく、土台となるベース言語nub2の処理系を元に、それを改造してもらう、という形式を取ります。以下の手順で、nub2のcloneおよび、nub2がコンパイル可能なことの確認をよろしくお願いします。

$ git clone https://github.com/kmizu/nub2.git
$ cd nub2
$ mvn compile

と入力して、

[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.github.kmizu:nub2 >------------------------
[INFO] Building nub2 0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ nub2 ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/k.mizushima/work/nub2/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ nub2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to /Users/k.mizushima/work/nub2/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.373 s
[INFO] Finished at: 2019-08-26T13:30:08+09:00
[INFO] ------------------------------------------------------------------------

のように表示されれば成功です。

Media View all Media

If you add event media, up to 3 items will be shown here.

Feed

kmizu

kmizu published プログラミング言語作成ハンズオン Vol.2.

08/26/2019 14:39

プログラミング言語作成ハンズオン Vol.2 を公開しました!(先ほどのは募集期間を間違って設定していたので、公開し直しました)

kmizu

kmizu published プログラミング言語作成ハンズオン Vol.2.

08/26/2019 13:47

プログラミング言語作成ハンズオン Vol.2 を公開しました!

Group

Ended

2019/11/09(Sat)

11:00
18:30

開催日時が重複しているイベントに申し込んでいる場合、このイベントには申し込むことができません

Registration Period
2019/08/26(Mon) 00:00 〜
2019/11/09(Sat) 00:00

Location

株式会社オプト 5F

東京都千代田区四番町6番 東急番町ビル

Organizer

Attendees(8)

komei_takayama

komei_takayama

プログラミング言語作成ハンズオン Vol.2 に参加を申し込みました!

みやしー

みやしー

プログラミング言語作成ハンズオン Vol.2に参加を申し込みました!

tada-connpass

tada-connpass

プログラミング言語作成ハンズオン Vol.2に参加を申し込みました!

sm0kym0nkey

sm0kym0nkey

プログラミング言語作成ハンズオン Vol.2に参加を申し込みました!

Br3-kyokyo

Br3-kyokyo

プログラミング言語作成ハンズオン Vol.2に参加を申し込みました!

d-kami

d-kami

プログラミング言語作成ハンズオン Vol.2に参加を申し込みました!

e6i24v

e6i24v

プログラミング言語作成ハンズオン Vol.2 に参加を申し込みました!

どんちゃん

どんちゃん

お構いなく!

Attendees (8)

Canceled (17)