pp4dの構文
pp4dの仕様 -> [id:lethevert:20050915:p4]
文
原則として、「一行=一文」とする
インデントが前行よりも深く、インデントを除いた行頭の文字が記号である場合は、前行と連結する。
行内に、「;」が含まれる場合は、「;」で文が分割される。その際、ニ文目以降は、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