Added for loops and do loops #148
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added Support for
foranddoLoopsdoLoopsThe
doloop works by creating two jump operations:forLoopsThe
forloop works by creating two jump operations and incrementing an index variable:Notes on Loop Implementation
InLoopflag to some statements that always return a value.Why
InLoopis needed:IAccess_Generalstill accesses the stack at the same offset, returning new values each iteration.InLoopacts as a guard, checking whether the statement is called inside an active loop, preventing stack growth issues.Other Alternatives i tried
Popafter every Variable assignment in Loop to get rid of extraIAccess_GeneraliAccess_Dynamic, which would access values not according to a static value, but based on the previous stack´s valueThis example wont even work, because
xwill still increase the stack and the system would be offset +1 every iteration, but i think the example shows,how this will bloat the code dramatically
Changing the tokens before parsing
Trying a revursive approach
Limitations:
Exitkeyword yet.do,for, orfunblock can misalign the stack, causing errors down the line.Test Cases