新しいC言語かどうかを判定する方法
新しいC言語かどうかを判定するひとつの方法は、そのパーサを300行程度でかけるかどうかである。
Go言語はalgol68とそれほど変わらないという記事があったようなのだけど、まったくそのとおりだと思う。
結局はBNFベースの言語だ。
objective Cの別シンタックスで、 Erlang の並列処理が出来るだけ。。。
一本の糸からいきなり構造物を作るのは時代遅れだ。
正規表現でなんちゃってトランスレータを作っても、構造を把握できてないのでバグがどこに入るかわからない。
新しいC言語は、LISPやHaskellの血を引き継いでおり、式ベースでなくてはいけない。
式がベースになっていることで、基本のパーサは簡単になる。
XMLの変換技術や、LISPの変換技術を応用できるようになる。
正規木文法で定義されており、マクロツリートランデューサ等で変換できるべきだ。
パーサはちょっと勉強すれば作れる必要がある。
実際私の作っている簡単なインタプリタのパーサは(エラー処理は未だ適当だけど)300行もあれば書ける。
そのためのアルゴリズムが下降型の演算子順位法だ。
これは手書きの再帰下降型のパーサに引けをとらないどころか場合によっては高速になりうる。
作り方については現在作成中である。何度もアップデートされた後、大学レベルではなく
高校の教科書レベルの簡単な作成方法ができあがる予定だ。
まず、そのような動的型の言語があって、それを高速化するために静的型付が作られるべきなのだ。
それが、pythonなのかもしれないけど、goとpythonはぜんぜん別物だよね。オフサイドルール使えないんだよね。。。