自作言語 oak その5 (symbol lookup/access)

自作言語 oak の関門の一つであるシンボルルックアップとシンボルアクセスが95%実装できた。シンボルルックアップ : 現在いるスコープから、識別子を検索する。検索の仕方は次の通り。1. 現在いるスコープから、スコープをうなぎのぼりし、識別子がそのスコ…

自作言語 oak その4 デリゲート((エン)クロージャ?)

進捗状況。パーサーはほとんど終わり、字句解析・構文解析フェーズはほとんど完成している。意味解析について。Scope を設定し、Scope を生成する Symbol のメンバーを SymbolTable に格納したり、現在いる Scope から Symbol を同一 Module 内で探すことま…

自作言語 oak その3

func f:var int x:var int y:var int = x + y; var a = 3; let g = f a; a = 5; writeln ( g 7 ) // 10? 12?このようなコードを考える。最後に表示されるのは 10 になるか 12 になるか?個人的には、このコードのように単純に書いた場合は 10 を表示したい(→…

自作言語 oak その2

型とメタプログラミングについて。 var の仕様について。 let a: var (int, int) = (3, 5) a = (4, 6) // pass a!!0 = 4; a!!1 = 6 // error let b: var [int] = [4, 6, 8, 10] b = [3, 5, 7, 9] // pass b !! 0 = 3 // errorこれを見れば大体わかると思う。…

自作言語 oak その1

自作言語作るぞ作るぞ詐欺を始めてはや数年、やっとこさ自作言語に取り掛かり始めた。今はパーサーを手書きしている。 最初は yacc だの bison だのといったLALRパーサ生成器でやろうかと思ったけど、最近の言語はLL文法が流行っているらしく、再帰下降パー…

ホモロジー群のホモトピー不変性

チェイン準同型