LunaCON: fix mistranslation of CON "else { if" to Lua "elseif".

When encountering a non-empty statement inside braces, emit "do" ... "end".

git-svn-id: https://svn.eduke32.com/eduke32@3840 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
helixhorned 2013-06-01 20:09:37 +00:00
parent e0a373893a
commit f0ed046a98
2 changed files with 17 additions and 1 deletions

View file

@ -3086,7 +3086,7 @@ local Grammar = Pat{
* sp1 * Var("single_stmt") * (lpeg.Cc(nil) / on.while_end), * sp1 * Var("single_stmt") * (lpeg.Cc(nil) / on.while_end),
stmt_common = Keyw("{") * sp1 * "}" / "" -- space separation of commands in CON is for a reason! stmt_common = Keyw("{") * sp1 * "}" / "" -- space separation of commands in CON is for a reason!
+ Keyw("{") * sp1 * lpeg.Ct(stmt_list) * sp1 * "}" + lpeg.Ct(Keyw("{")/"do" * sp1 * stmt_list * sp1 * (Keyw("}")/"end"))
+ con_inner_command + Var("switch_stmt") + lpeg.Ct(Var("while_stmt")), + con_inner_command + Var("switch_stmt") + lpeg.Ct(Var("while_stmt")),
single_stmt = Stmt( lone_else^-1 * (Var("stmt_common") + Var("if_stmt")) ), single_stmt = Stmt( lone_else^-1 * (Var("stmt_common") + Var("if_stmt")) ),

View file

@ -0,0 +1,16 @@
actor 1890 1
// The following "else { if" must not be translated to an "elseif".
ifcount 1 nullop else
{
ifvare 0 0
spawn 1
else
spawn 2
ifvare 1 1
spawn 3
else ifvare 1 2
spawn 4
}
enda