はじめに
前回のIF文の比較で、自作の日本語トランスコンパイラ言語では、条件分岐構文のはじまりとおしまいに全角記号の◇を使うことを開示しました。今回は繰り返し構文のFOR文です。ということは、まさかのまさか!?
日本語トランスコンパイラ言語の詳しい利用シーンのイメージはこちらへ
この記事内容の作業目的
日本語トランスコンパイラ言語 Re:Mind という自作言語の制御構文をターゲット言語のそれと比較して検討する。
if文につづいてfor文。しかもbreak条件はなしとして、あとで考えます。つまり、無限ループの書き方です。
この記事内容の保証
※この記事には実装的な情報が含まれます。各言語で書かれた引用ソースの妥当性は保証されません。また、開発中(というよりまだ企画段階)の仕様のため、本記事に開示された自作言語の仕様は予告なく変更される場合があります。
ターゲット言語の構文イメージ
ターゲット言語とは
プログラミング言語としてのソース言語を日本語を母語とするテキスト(自然文ではない)として、その変換対象となるプログラミング言語のことです。
現在、下記の言語を想定しています。全機能全ライブラリのサポートは目的としておらず、基本的な制御構文のトランスコンパイルが可能なレベルとしています。(独自に対象言語のライブラリはインポートして日本語ラッパ上で使えるようにしたいとうい願望はあり)
-
JAVA
-
C#
-
TypeScript
-
Go
このあたりのグループはC言語を祖先として構文似てるかも的な思わくあり。 -
VBA(Excel用)
オフィスワーカーにとってステップアップスキルとしてまだまだ需要あり。 -
Mind
-
DNCL
日本語プログラミング言語グループ。Mindを第1世代の日本語プログラミング言語とすると、なでしこ、ドリトルなどの後発第2世代日本語プログラミング言語のほとんどはDNCLをソース言語とする互換モードを実装されているようなので、とりあえずRe:MindとしてはDNCLをターゲット言語としておけば、第2世代各言語の処理系の実行にはつながるかなという思惑です。
各ターゲット言語のFOR文
では、「Re:Mind」 (自作言語リマインド)と他言語との構文比較第2弾として、各ターゲット言語のFOR文を比較して、自作言語のループ文を検討します。
最初に長くならずイメージが比較しやすいよう、breakはなしとして、あとで考えます。また、カウンタ変数を構文中に宣言して、カウントアップ・ダウンを行い、ループ終了に向かっていくような複雑な構文は、また別の機会にゆずるとします。無条件のループ文が書けない言語の場合は、最も単純な等価構文とします。
JAVA
for(;;){
//todo
}
C#
for(;;)
{
//todo
}
TypeScript
for(;;){
//todo
}
tsは自信なかったのでPlaygroundで実行してしまいました。エラーにはならずハングアップしてしまいましたので、上記構文OKです。
Go
for {
//todo
}
VBA(Excel用)
Do While 0=0
'todo
Loop
VBAにはFor文ありますが、カウンタ変数必須のためDo Whileで代替しました。
Mind
ここから
※todo
繰り返す
DNCL
0 = 0 の間,
//todo
を繰り返す
DNCLは無条件ループ書けないようでした。Do While相当の構文で代替しました。
各言語のFOR構文、または相当構文の間に挟まれているtodoは各言語のコメントアウト符号によるコメントです。
ソース言語の構文イメージ
ソース言語のFOR文
Re:Mind
〇繰り返す
//todo
〇ここまで
おわりに
◇や〇を積極的にトークンとして活用するのが、「Re:Mind」(自作言語リマインド)の特徴です。
この企画を実現・設計・実装していくには、スキル上の課題や未獲得の知見など多数あることが予想されます。Qiita様の場をお借りして、獲得したスキルや知見の共有、いたらない点のご支援をいただければと考えています。
参考リンク