長くて長い、構文の木 – Esolang Advent Calendar 2012(2日目)

2012-12-02

この記事は、Esolang Advent Calendar 2012の2日目の記事です。

とうとう、12月なんですね。

今年も開催されるという事で、今年受験生なのですが、なんとか書いてみました!初参戦です!

今回は、夏に興味本位で制作してみた、「VBCPP」(“ぶいびーしーぷらすぷらす”と読みます!)を使って、いろいろやってみます!

VBCPPとは

説明が難しいので、プレゼンのスライドも同時に見てもらえれば…!

VBCPPは、VB100%[要出典]でできた、「クロス言語開発フレームワーク」的な存在ただのおもちゃです。

基本的な機能として、以下のような特徴があります。

VBCPPの1つの利点として、「DSLを組み込める点」があります。
例えば、一部分だけをSQLを使って記述できたら、面白いですよね…!
まあ、言語特有の良い所はすべて実現する事は難しいし、実際VBCPPの実用性は皆無に等しいとも思っていますが、お遊びにはピッタリなんですよ…?

VBCPPの利用方法

  1. VBCPP標準ビルダを利用して、コマンドラインから利用する方法。
    • VBCPPCoreライブラリのGeneratorを参照して、コード中からASTを渡す方法。
      • VBCPPCoreライブラリのCompilerを参照して、コード中から”パーサープラグインのインスタンス”と”コンパイルしたいコード”を渡す方法。

1番目の利用方法

これは、そのまま実行するだけです。

なお、ソースコードの識別には、VBCPP標準ビルダの構文を利用します。

(なお、2番目と3番目では、この構文に縛られる必要がありません。)

サンプルコード

2番目の利用方法

これが、今回の記事で使用する方法です。

のちのち説明します!

3番目の利用方法

これは、主に自作IDEや俺々言語のバイナリ生成ライブラリとして利用する方法です。

で、難解言語ってどこにあるのさ

実は、2番目の利用方法にそのネタがあります。

VBCPPのASTは、それぞれが独立して存在することができるので、パーサーから扱っていくぶんには、そこそこ使いやすいです。パーツを組み合わせていく感じです。(個人的見解)

実はVBCPPのASTは、ほとんどのプログラムを”1行”で表現できるように設計されています。

そのコードがこちら。

そう、冗長なのです。

上の画像は、AST式1文を1行にして、折り返し表示しています。

適度に、改行を入れてあげると、以下のようになります。(これでも1文です)

(ちなみにVBでは、改行は文の句切れと認識されるので、書くのが余計に大変だったり…)

以下、アピールポイントです!

参考画像2

FizzBuzzを書いてみよう!

では早速FizzBuzzを書いてみます!

FizzBuzz on VB

とりあえず、VBのFizzBuzzです。

まあ、普通…ですよね?

FizzBuzz on VBCPP

ではでは、お待ちかねのVBCPPでのFizzBuzzです。

はい…

Newが波打っているのが、ご覧いただけたかと思います。

難解というより、超冗長だから難解なんですよね…(意味不明

_(半分)意図的でない_のだから、もしかしたら難解プログラミング言語の要件を満たしてないかもですが…!

[参考]: 難解プログラミング言語 – Wikipedia

もちろん、これも”Hello,world!”の例と同様に、改行なしでも表現できます。

ちょっとここで余談

実は、VBCPPにはもう1つのAST表現があります。(正確には、まだまだ考えています。)

それがこちら!(例としてHello,Worldの式を組んでいます。)

…結構すっきりしてますよね?(嘘

この式の特徴に関しては、上にあるコードのコメント部分をお読みください。

この表現方法を今回の記事で使わなかった理由としては、仕上がっていなかったというのもありますが、”Newが波打っている”のと”カッコしかない”というのをお見せしたかったからでもあるのです!

結局何が言いたいの?

難解プログラミング言語は、意外なところから生まれることもある! 以上です。

最後までご覧いただき、ありがとうございました!


次は、12月3日担当のうひょさんです!

うひょさんの記事は、レベルが高いので期待ですよ!

このエントリーをはてなブックマークに追加
« 応用情報技術者試験に合格しました!(平成24年度春季試験) プログラミング生放送勉強会 第20回@品川 に参加しました! »