pp4dの構文

pp4dの仕様 -> [id:lethevert:20050915:p4]

コメント

Delphi(Pascal)のコメントに準ずる。

//コメント
{
  コメント
}
(*
  コメント
 *)

原則として、「一行=一文」とする
インデントが前行よりも深く、インデントを除いた行頭の文字が記号である場合は、前行と連結する。
行内に、「;」が含まれる場合は、「;」で文が分割される。その際、ニ文目以降は、TAB1つ分字下げしたものとして展開される。行末の「;」は無視される。また、「do」「then」は、「;」と同じとして扱われる。

    for I := 0 to 10 do x = x * x; y = y - 1

は、下のように展開される。

    for I := 0 to 10
        x = x * x
        y = y - 1

ただし、関数宣言に現れる「;」は、無視され、文の分割としては扱われない。
(検討中)
「else」はどのように扱うべきか?

ブロック

同じインデントを持つ行が連続する場合、ブロックを形成する。
インデントが深い行がある場合、ネストされたブロックを形成する。
インデントの浅い行が出現すると、ブロックは閉じられる。
「begin」「end;」は、関数定義で利用されるもの以外は無視される。

関数定義

関数定義に関する構文については、まだ検討中であるが、以下のものが検討されている。

function TSample.Calc(x, y: Integer; z: String):Integer;
var
  a: Integer;
begin
  a := StrToInt(z);
  Result := a * (x + y) + a;
end;
::TSample
+Calc x, y: Integer z: String -> Integer
  a:Integer := StrToInt z
  Result := a * (x + y) + a