#topicpath LLPMLはASTをそのままXMLで表記したもののため、非常に冗長です。 そのためタグの子要素になる数式で中置記法をサポートしました。 演算子の仕様はC#に準じています。 実体参照表記を避けるため、一部エイリアスを用意しました。<?llpml ?>の中に記述することでエイリアスを回避できます。 |CENTER:元表記|CENTER:エイリアス|CENTER:由来|CENTER:備考|h |&&|andalso|CENTER:-|"&"が実体参照のため| ||||orelse|CENTER:-|↑とバランスを取るため| |&|and|CENTER:-|"&"が実体参照のため| |||or|CENTER:-|↑とバランスを取るため| |^|xor|CENTER:-|↑とバランスを取るため| |<|lt|less than|"<"が実体参照のため| |>|gt|greater than|↑とバランスを取るため| |<=|le|less equal|"<"が実体参照のため| |>=|ge|greater equal|↑とバランスを取るため| |<<|shl|shift left|"<"が実体参照のため| |>>|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 --> 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> ** コメント [#ob49080d] //#comment(below)