Top / LLPML / 簡略化

LLPMLはASTをそのままXMLで表記したもののため、非常に冗長です。 そのためタグの子要素になる数式で中置記法をサポートしました。

演算子の仕様はC#に準じています。 実体参照表記を避けるため、一部エイリアスを用意しました。

元表記エイリアス由来備考
&&andalso-"&"が実体参照のため
||orelse-↑とバランスを取るため
&and-"&"が実体参照のため
|or-↑とバランスを取るため
^xor-↑とバランスを取るため
<ltless than"<"が実体参照のため
>gtgreater than↑とバランスを取るため
<=leless equal"<"が実体参照のため
>=gegreater equal↑とバランスを取るため
<<shlshift left"<"が実体参照のため
>>shrshift right↑とバランスを取るため

IEEE 754/比較?にも例があります。

以下、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 -->
printfln(fmt, a, b);

<!-- complex -->
<call name="printfln">
	<string name="fmt" />
	<var name="a" />
	<int name="b" />
</call>
<!-- simple -->
printfln("sub(%d, %d) = %d", t.a, t.b, t.sub());

<!-- 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>

コメント



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS