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" ";"] ]