LLPMLはASTをそのままXMLで表記したもののため、非常に冗長です。 そのためタグの子要素になる数式で中置記法をサポートしました。
演算子の仕様はC#に準じています。 エンティティ表記を避けるため、一部エイリアスを用意しました。
元表記 | エイリアス |
&& | andalso |
\ | a |
simpleが簡略版、complexが従来版です。
<var-declare name="a">2</var-declare> <int-declare name="b">3</int-declare> <string-declare name="fmt">a = %d, b = %d</string-declare> <!-- simple --> <call name="printfln">fmt, a, b</call> <!-- complex --> <call name="printfln"> <string name="fmt" /> <var name="a" /> <int name="b" /> </call>
<struct-declare name="t" type="test"> 9, 6 </struct-declare> <!-- simple --> <call name="printfln">"sub(%d, %d) = %d", t.a, t.b, t.sub()</call> <!-- complex --> <call name="printfln"> <string>sub(%d, %d) = %d</string> <struct-member ptr="t" name="a" /> <struct-member ptr="t" name="b" /> <invoke name="sub"> <ptr name="t" /> </invoke> </call>