Gibbed.MadMax-1.5.3
Release 1.5.3
break statement support + decompiler bug fixes
New feature: break keyword
- The
breakstatement is now fully supported in the decompiler, compiler, and round-trip pipeline - Exits the enclosing
whileloop, matching Python semantics
Decompiler fixes (StructuralAnalysis):
- Fixed
breakinsidewhileloops — previously emitted aspass, causing all post-loop code to be absorbed into the loop body. Scripts likelib_vehicleupgrades.xvmc(RecomputeGearbox) produced functionally broken output when recompiled. - Fixed
elifbody absorbing subsequent statements —FindLinearEndcould advance past the stop block, causing code after anif/elifchain to be pulled inside the last branch (e.g. MassCompensateSuspensionLength). - Fixed
elifchains collapsing into nestedifs — merge point detection failed when the merge coincided with the outer exit block, breaking flatelifchains into deeply nestedifblocks with misplacedreturnstatements (e.g. DiminishingReturnsProgression).
StoreItem bug fix:
- Fixed
stitemstack order in both the decompiler (ExpressionRecovery) and compiler (CodeGenerator). The XVM convention ispush value, push obj, push index→stitempopsindex, obj, val.
Batch directory mode:
- Decompiler and compiler now accept a directory as input, recursively processing all
.xvmc/.xvmfiles. Supports drag-and-drop of folders onto the.exe.
Affected files:
StructuralAnalysis.cs— region-based control flow recovery with break supportAst.cs/AstPrinter.cs—BreakStmtAST nodeToken.cs/Lexer.cs/Parser.cs/CodeGenerator.cs—breakcompilationExpressionRecovery.cs/CodeGenerator.cs—stitemstack order fixXvmDecompile/Program.cs/XvmCompile/Program.cs— batch directory mode