プロデル1.7.1016にてようやく「の」の仕様が固まったので今回紹介します。
プロデルでプログラムを作っていると「の」の仕様がよく分からないと思われた方が多いかと思います。実はプロデルを設計している過程で当初から「これだ」という仕様を固めることが難しく、今日まであやふやなままでいました。
今回は、「の」についてしっかり説明したいとも思います。
「の」の役割
プロデルは、日本語の語順や品詞、名詞といった日本語文の要素をプログラミング言語の文法として言語仕様に採り入れたプログラミング言語です。簡単に説明すると、助詞や動詞などの日本語の文字列をプログラム上で意味のある記号として構文解析しています。例えば助詞は引数を表す名前付き引数の印として使う、といったことをしています。
格助詞「の」は、プロデルでは次のような主に2つの役割で使われます。
- C言語やJavaなどの”.”や”->”に相当するメンバーアクセス
- 引数としての「の」
多くのプログラミング言語で採用されている”.”記号に相当する記号としてプロデルでは助詞「の」が使われています。例えば「ボタンの位置」といった設定項目を取得したり設定したりする(メンバーアクセス)のによく使っています。
プロデルには「を」や「へ」といったたくさんの助詞がありますが「の」に関しては特定の種類の変数や設定項目を表すために使うので、他の助詞とは解釈の順番が異なります。
具体的には、次の4つの形の文法があります。
- 【既定引数】の【種類】の【名詞手順名】
- 【既定引数】の【名詞手順名】
- {【補語】}【既定引数】の【名詞手順名】
- 【レシーバ】の【名詞手順名】
名詞手順に限って、助詞「の」を持つ実補語を宣言できます。この実補語「~の」に対応する引数を「既定引数」と呼ぶことにします。「名詞手順」とは、名前が名詞である手順です。通常の手順は、名前が動詞であるため語尾を変える(活用させる)ことができますが、名詞手順名は名詞として扱われるため、語尾を変えられません。
1.【既定引数】の【種類】の【名詞手順名】形の呼出し式
次の式では、「ファイル」静的種類の「一覧」手順を呼び出します。一覧手順の既定引数として「デスクトップ」を指定しています。
デスクトップのファイルの一覧
2.【既定引数】の【名詞手順名】形の呼出し式
次の式では、「整数」手順を呼び出します。既定引数として3.14を指定しています。
3.14の整数
なおこの形に限り『整数(3.14)』と書くこともできます。
3.{【補語】}【既定引数】の【名詞手順名】形の呼出し式
2.の形に補語(実補語と形式補語)が付く形の式です。次の式では、「個数」手順を呼び出しています。実補語「~から」と、既定引数として「i」を指定しています。
「niwaniwaniwaniwatorigairu」から「i」の個数
フルパスでマイピクチャのファイルの一覧
既定引数を含む呼出し式では、【補語】,【レシーバ】,【既定引数】の順番を変えることはできません。
4.【レシーバ】の【名詞手順名】形の呼出し式
次の文では、配列のインスタンス「一覧」に対して「合計」手順を呼び出しています。
一覧は、{30,40,10,20}
一覧の合計を報告する
形は3.と似ていますが、「合計」手順に既定助詞は必要なく、式中の「一覧」がレシーバを表しています。このように見かけは設定項目と似ている名詞手順もあります。
名詞手順を宣言するには
名詞型手順は、次のような手順定義で宣言できます。この宣言での「求める」は手順名(動詞)ではなく、名詞手順であることを表す特別な予約語(キーワード)です。
《既定引数》の、《名詞手順名》を求める手順
終わり
なお、既定引数を表す助詞「の」は、名詞手順に1つだけ宣言できます。
1の特殊計算結果を報告する
【X】の、特殊計算結果を求める手順
X*10を返す
終わり
3.{【補語】}【既定引数】の【名詞手順名】形の名詞手順は次の例のように宣言します。
140と20の最大公約数を報告する
【A】と【B】の、最大公約数を求める手順
もしBが0ならAを返す
N=AをBで割った余り
BとNの最大公約数を返す
終わり
4.【レシーバ】の【名詞手順名】形の名詞手順は、次の例のように種類と手順を宣言します。
ブラックボックスのおまじないを報告する
ブラックボックスとは
おまじないを求める手順
「アブラカダ[「ブ」を(10の乱数)回繰り返し]ラ」を返す
終わり
終わり
「の」を含む名前を宣言するには
「木の葉」といったように、変数などの名前に「の」を含めたい時もあります。その場合には【】もしくは” “で囲んで宣言することで、「の」を含む名前を使うことができます。
【木の葉】は、「萌黄色」
木の葉を報告する
"このは"=0xA9D159
このはを報告する
まとめ
助詞「の」を使った文法をご紹介しました。参考になれば幸いです。
今後もプロデルらしい使いやすい、面白い文法を提案していきたいと思います。