2024年04月20日くいなちゃん


プログラミング言語Kuin」の言語仕様10、その他の構文についてです。

1Kuinのコメント

1.1複数行コメント



Kuinでは、「{」と「}」で囲んだ部分が複数行コメントとなり、コンパイル時に読み飛ばされます。
複数行コメントの仕様は図1-1の通りです。
  • 「{」と「}」で囲んだ部分はコンパイル時に空白1文字と見なす。
  • 複数行コメントは、入れ子にできる。 例えば、「{{{コメント}}}」のように記述できる。
  • charリテラルおよび[]charリテラル中の「{」「}」は、コメントではなく文字や文字列と見なす。
  • 複数行コメントは、行の途中であっても書け、また複数行をまたがってコメントとすることができる。
図1-1: 複数行コメントの仕様
設計の理由

複数行コメントに「{」「}」を使う記法は、Pascalに由来します。

C言語のコメント「/*」「*/」は入れ子にできないため、コメントアウトした部分にコメントが含まれていると、途中の「*/」にマッチして正しくコメントアウトできないことがありました。 そこでKuinではコメントが入れ子にできるようにしました。

1.2単一行コメント



Kuinでは、行頭の「;」から行末の改行までが単一行コメントとなり、コンパイル時に読み飛ばされます。
単一行コメントの仕様は図1-2の通りです。
  • 単一行コメントは、行の途中から始めることはできず、行の最初の文字が空白文字を除いて「;」でなければならない。
  • charリテラルおよび[]charリテラル中の「;」は、コメントではなく文字と見なす。
  • 複数行コメント、単一行コメント、charリテラル、[]charリテラルが入り混じっていたときは、先に出現するものから優先される。
図1-2: 単一行コメントの仕様
設計の理由

単一行コメントに「;」を使う記法は、x86アセンブラに由来します。

コメントの記号に「{」「}」「;」を採用した理由は、演算子等で使う記号と重複しないほうが望ましいために消去法で決定しました。

2行分割

Kuinでは、単に行の途中で改行するとコンパイルエラーとなります。 途中で改行したい場合は、改行した直後の行頭に「|」を記述します(図2-1)。
  1. func f()
  2.   do @g
  3.   |(
  4.   |2 + 3,
  5.   |@a * @b,
  6.   |@h()
  7.   |)
  8. end func
図2-1: 行分割
行分割の仕様は図2-2の通りです。
  • 改行の次の文字が、空白文字を除いて「|」だったとき、その改行および「|」は無かったものとし、コンパイル時に空白1文字と見なす。
  • 文字リテラル中、および文字列リテラル中では「|」で分割することはできない。
図2-2: 行分割の仕様
設計の理由

Visual BasicやC言語のマクロなどでは、行の途中で改行する場合に行末に特定の文字を記述しますが、Kuinは行頭に重要な情報が集まりますので、改行中かどうかが行頭で判断できるようにしました。

1713549366jaf