- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
** 中置記法 [#d40712f8]
LLPMLはASTをそのままXMLで表記したもののため、非常に冗長です。
そのためタグの子要素になる数式で中置記法をサポートしました。
演算子の仕様はC#に準じています。
エンティティ表記を避けるため、一部エイリアスを用意しました。
実体参照表記を避けるため、一部エイリアスを用意しました。
|CENTER:元表記|CENTER:エイリアス|h
|&&|andalso|
|\|a|
|CENTER:元表記|CENTER:エイリアス|CENTER:由来|CENTER:備考|h
|&&|andalso|CENTER:-|"&"が実体参照のため|
||||orelse|CENTER:-|andalsoとバランスを取るため|
|&|and|CENTER:-|"&"が実体参照のため|
|||or|CENTER:-|andとバランスを取るため|
|^|xor|CENTER:-|andとバランスを取るため|
|<|lt|less than|"<"が実体参照のため|
|>|gt|greater than|">"が実体参照のため|
|<=|le|less equal|"<"が実体参照のため|
|>=|ge|greater equal|">"が実体参照のため|
|<<|shl|shift left|"<"が実体参照のため|
|>>|shr|shift right|">"が実体参照のため|
** 例 [#t8263f65]
simpleが簡略版、complexが従来版です。
[[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 -->
<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>
** コメント [#ob49080d]
#comment(below)