module php/pp/common/operators

rules
// Parenthesis
  php-to-box: Parenthetical(e)     -> H([SOpt(HS(), "0")], [ S("(") | [ e | [ S(")") ] ] ])
box |[ H hs=0 ["(" ~e ")"] ]|
rules // Assign operators php-to-box: Assign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("=") | [ e ] ] ])
box |[ H hs=1 [~lval "=" ~e] ]|
php-to-box: PlusAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("+=") | [ e ] ] ])
box |[ H hs=1 [~lval "+=" ~e] ]|
php-to-box: MinAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("-=") | [ e ] ] ])
box |[ H hs=1 [~lval "-=" ~e] ]|
php-to-box: MulAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("*=") | [ e ] ] ])
box |[ H hs=1 [~lval "*=" ~e] ]|
php-to-box: DivAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("/=") | [ e ] ] ])
box |[ H hs=1 [~lval "/=" ~e] ]|
php-to-box: ConcatAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S(".=") | [ e ] ] ])
box |[ H hs=1 [~lval ".=" ~e] ]|
php-to-box: ModAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("%=") | [ e ] ] ])
box |[ H hs=1 [~lval "%=" ~e] ]|
php-to-box: AndAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("&=") | [ e ] ] ])
box |[ H hs=1 [~lval "&=" ~e] ]|
php-to-box: OrAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("|=") | [ e ] ] ])
box |[ H hs=1 [~lval "|=" ~e] ]|
php-to-box: XorAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("^=") | [ e ] ] ])
box |[ H hs=1 [~lval "^=" ~e] ]|
php-to-box: SLAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S("<<=") | [ e ] ] ])
box |[ H hs=1 [~lval "<<=" ~e] ]|
php-to-box: SRAssign(lval, e) -> H([SOpt(HS(), "1")], [ lval | [ S(">>=") | [ e ] ] ])
box |[ H hs=1 [~lval ">>=" ~e] ]|
rules // Increment / Decrement php-to-box: PostInc(e) -> H([SOpt(HS(), "0")], [ e | [ S("++") ] ])
box |[ H hs=0 [~e "++"] ]|
php-to-box: PreInc(e) -> H([SOpt(HS(), "0")], [ S("++") | [ e ] ])
box |[ H hs=0 ["++" ~e] ]|
php-to-box: PostDec(e) -> H([SOpt(HS(), "0")], [ e | [ S("--") ] ])
box |[ H hs=0 [~e "--"] ]|
php-to-box: PreDec(e) -> H([SOpt(HS(), "0")], [ S("--") | [ e ] ])
box |[ H hs=0 ["--" ~e] ]|
rules // Logical / Bitwise php-to-box: Or(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("||") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "||" ~e2] ]|
php-to-box: And(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("&&") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "&&" ~e2] ]|
php-to-box: LOr(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("or") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "or" ~e2] ]|
php-to-box: LAnd(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("and") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "and" ~e2] ]|
php-to-box: LXor(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("xor") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "xor" ~e2] ]|
php-to-box: BinOr(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("|") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "|" ~e2] ]|
php-to-box: BinAnd(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("&") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "&" ~e2] ]|
php-to-box: BinXor(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("^") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "^" ~e2] ]|
rules // Arithmetic / bitwise php-to-box: Concat(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S(".") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "." ~e2] ]|
php-to-box: Plus(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("+") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "+" ~e2] ]|
php-to-box: Min(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("-") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "-" ~e2] ]|
php-to-box: Mul(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("*") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "*" ~e2] ]|
php-to-box: Div(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("/") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "/" ~e2] ]|
php-to-box: Mod(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("%") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "%" ~e2] ]|
php-to-box: SL(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("<<") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "<<" ~e2] ]|
php-to-box: SR(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S(">>") | [ e2 ] ] ])
box |[ H hs=1 [~e1 ">>" ~e2] ]|
rules // Unary php-to-box: Positive(e) -> H([SOpt(HS(), "0")], [ S("+") | [ e ] ])
box |[ H hs=0 [ "+" ~e] ]|
php-to-box: Negative(e) -> H([SOpt(HS(), "0")], [ S("-") | [ e ] ])
box |[ H hs=0 [ "-" ~e] ]|
php-to-box: Not(e) -> H([SOpt(HS(), "0")], [ S("!") | [ e ] ])
box |[ H hs=0 [ "!" ~e] ]|
php-to-box: Neg(e) -> H([SOpt(HS(), "0")], [ S("~") | [ e ] ])
box |[ H hs=0 [ "~" ~e] ]|
rules // Cast php-to-box: IntCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(int)")) | [ e ] ])
box |[ H hs=0 [ KW["(int)"] ~e ] ]|
php-to-box: FloatCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(real)")) | [ e ] ])
box |[ H hs=0 [ KW["(real)"] ~e ] ]|
php-to-box: FloatCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(double)")) | [ e ] ])
box |[ H hs=0 [ KW["(double)"] ~e ] ]|
php-to-box: FloatCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(float)")) | [ e ] ])
box |[ H hs=0 [ KW["(float)"] ~e ] ]|
php-to-box: BoolCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(bool)")) | [ e ] ])
box |[ H hs=0 [ KW["(bool)"] ~e ] ]|
php-to-box: StringCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(string)")) | [ e ] ])
box |[ H hs=0 [ KW["(string)"] ~e ] ]|
php-to-box: ArrayCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(array)")) | [ e ] ])
box |[ H hs=0 [ KW["(array)"] ~e ] ]|
php-to-box: ObjectCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(object)")) | [ e ] ])
box |[ H hs=0 [ KW["(object)"] ~e ] ]|
php-to-box: NullCast(e) -> H([SOpt(HS(), "0")], [ FBOX(KW(), S("(unset)")) | [ e ] ])
box |[ H hs=0 [ KW["(unset)"] ~e ] ]|
rules // Equality php-to-box: IsIdentical(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("===") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "===" ~e2 ] ]|
php-to-box: IsNotIdentical(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("!==") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "!==" ~e2 ] ]|
php-to-box: IsEqual(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("==") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "==" ~e2 ] ]|
php-to-box: IsNotEqual(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("!=") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "!=" ~e2 ] ]|
php-to-box: Less(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("<") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "<" ~e2 ] ]|
php-to-box: LessEqual(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S("<=") | [ e2 ] ] ])
box |[ H hs=1 [~e1 "<=" ~e2 ] ]|
php-to-box: Greater(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S(">") | [ e2 ] ] ])
box |[ H hs=1 [~e1 ">" ~e2 ] ]|
php-to-box: GreaterEqual(e1,e2) -> H([SOpt(HS(), "1")], [ e1 | [ S(">=") | [ e2 ] ] ])
box |[ H hs=1 [~e1 ">=" ~e2 ] ]|
rules // Ternary php-to-box: Ternary(e1,e2,e3) ->
H([SOpt(HS(), "1")], [ e1 | [ FBOX(KW(), S("?")) | [ e2 | [ FBOX(KW(), S(":")) | [ e3 ] ] ] ] ])
box |[ H hs=1 [~e1 KW["?"] ~e2 KW[":"] ~e3 ] ]|
rules// Object creation php-to-box: ObjectCreation(name,exprs) ->
H([SOpt(HS(), "1")], [ FBOX(KW(), S("new")) | [ H([SOpt(HS(), "0")], [ name | [ args ] ]) ] ])
box |[ H hs=1 [ KW["new"] H hs=0 [~name ~args] ] ]|
where <list-to-args> exprs => args php-to-box: ObjectCreation(e) -> H([SOpt(HS(), "1")], [ S("new") | [ e ] ])
box |[ H hs=1 ["new" ~e] ]|
php-to-box: ClassName(s) -> H([], [ S(s) ])
H [ s ]
rules // Parameters php-to-box: Param(b) -> b php-to-box: RefParam(b) -> H([SOpt(HS(), "0")], [ S("&") | [ b ] ])
H hs=0 [ "&" b ]