module php/pp/altsyntax
strategies
rules
/***
* Alternative syntaxes need special treatment, the statements are captured
* in a list that is to be shown.
*/
// WHILE
php-to-box:
AltWhile(cond,stat) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("while")) | [ H([SOpt(HS(), "0")], [ S("(") | [ cond | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ]) | [ H([SOpt(HS(), "0")], [ FBOX(KW(), S("endwhile")) | [ S(";") ] ]) ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [ KW["while"] H hs=0 ["(" ~cond ")" ":"] ]
~*stat
]
H hs=0 [ KW["endwhile"] ";" ]
]
// FOR
php-to-box:
AltFor(init,cond,update,stat) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("for")) | [ H([SOpt(HS(), "0")], [ S("(") | [ init' | [ H([SOpt(HS(), "1")], [ S(";") | [ cond' ] ]) | [ H([SOpt(HS(), "1")], [ S(";") | [ update' ] ]) | [ S(")") | [ S(":") ] ] ] ] ] ]) ] ]) | [ stat ] ]) | [ H([SOpt(HS(), "0")], [ S("endfor") | [ S(";") ] ]) ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [ KW["for"] H hs=0 ["(" ~init'
H hs=1 [";" ~cond']
H hs=1 [";" ~update']
")" ":" ]]
~*stat
]
H hs=0 ["endfor" ";" ]
]
where <separate-by-comma> init => init'
;<separate-by-comma> cond => cond'
;<separate-by-comma> update => update'
// IF
php-to-box:
AltIf(cond,stat) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("if")) | [ H([SOpt(HS(), "0")], [ S("(") | [ cond | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ]) | [ H([SOpt(HS(), "0")], [ S("endif") | [ S(";") ] ]) ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [ KW["if"] H hs=0 ["(" ~cond ")" ":"] ]
~*stat ]
H hs=0 [ "endif" ";" ] ]
php-to-box:
AltIf(cond,stat,elseif) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("if")) | [ H([SOpt(HS(), "0")], [ S("(") | [ cond | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ]) | [ elseif | [ H([SOpt(HS(), "0")], [ S("endif") | [ S(";") ] ]) ] ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [ KW["if"] H hs=0 ["(" ~cond ")" ":"] ]
~*stat ]
~*elseif
H hs=0 [ "endif" ";" ] ]
php-to-box:
AltIf(cond,stat,elseif,els) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("if")) | [ H([SOpt(HS(), "0")], [ S("(") | [ cond | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ]) | [ elseif | [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "0")], [ FBOX(KW(), S("else")) | [ S(":") ] ]) | [ els ] ]) | [ H([SOpt(HS(), "0")], [ S("endif") | [ S(";") ] ]) ] ] ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [ KW["if"] H hs=0 ["(" ~cond ")" ":"] ]
~*stat ]
~*elseif
V vs=0 is=2 [
H hs=0 [KW["else"] ":" ]
~*els ]
H hs=0 [ "endif" ";" ] ]
php-to-box:
AltElseIf(cond,stat) ->
V([SOpt(VS(), "0")], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("elseif")) | [ H([SOpt(HS(), "0")], [ S("(") | [ cond | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ])
V vs=0 [H hs=1 [KW["elseif"] H hs=0 ["(" ~cond ")" ":"]] ~*stat]
// SWITCH
php-to-box:
AltSwitch(sub,cases) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("switch")) | [ H([SOpt(HS(), "0")], [ S("(") | [ sub | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ cases ] ]) | [ H([SOpt(HS(), "0")], [ S("endswitch") | [ S(";") ] ]) ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [KW["switch"] H hs=0 ["(" ~sub ")" ":" ]]
~*cases ]
H hs=0 ["endswitch"";"]
]
// FOREACH
php-to-box:
AltForEach(var,pattern,stat) ->
V([SOpt(VS(), "0")], [ V([SOpt(VS(), "0")|[SOpt(IS(), "2")]], [ H([SOpt(HS(), "1")], [ FBOX(KW(), S("foreach")) | [ H([SOpt(HS(), "0")], [ S("(") | [ H([SOpt(HS(), "1")], [ var | [ S("as") | [ pattern ] ] ]) | [ S(")") | [ S(":") ] ] ] ]) ] ]) | [ stat ] ]) | [ H([SOpt(HS(), "0")], [ S("endforeach") | [ S(";") ] ]) ] ])
V vs=0 [
V vs=0 is=2 [
H hs=1 [KW["foreach"] H hs=0 ["(" H hs=1 [ ~var "as" ~pattern ] ")" ":" ]]
~*stat ]
H hs=0 ["endforeach" ";"] ]