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