#topicpath

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

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

|CENTER:元表記|CENTER:エイリアス|CENTER:由来|CENTER:備考|h
|&&|andalso|CENTER:-|"&"が実体参照のため|
||||orelse|CENTER:-|andalsoとバランスを取るため|
||||orelse|CENTER:-|↑とバランスを取るため|
|&|and|CENTER:-|"&"が実体参照のため|
|||or|CENTER:-|andとバランスを取るため|
|^|xor|CENTER:-|andとバランスを取るため|
|||or|CENTER:-|↑とバランスを取るため|
|^|xor|CENTER:-|↑とバランスを取るため|
|<|lt|less than|"<"が実体参照のため|
|>|gt|greater than|">"が実体参照のため|
|>|gt|greater than|↑とバランスを取るため|
|<=|le|less equal|"<"が実体参照のため|
|>=|ge|greater equal|">"が実体参照のため|
|>=|ge|greater equal|↑とバランスを取るため|
|<<|shl|shift left|"<"が実体参照のため|
|>>|shr|shift right|">"が実体参照のため|
|>>|shr|shift right|↑とバランスを取るため|

** 例 [#t8263f65]

[[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>
 printfln(fmt, a, b);
 
 <!-- complex -->
 <call name="printfln">
 	<string name="fmt" />
 	<var name="a" />
 	<int name="b" />
 </call>

 <!-- simple -->
 <call name="printfln">"sub(%d, %d) = %d", t.a, t.b, t.sub()</call>
 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>

** コメント [#ob49080d]

#comment(below)


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