Support while loops in .xds - #4
Open
breakfast-champion wants to merge 1 commit into
Open
Conversation
StarsMmd
reviewed
Sep 26, 2020
| lines[last] = lines[last].replacingOccurrences(of: "\n", with: "") + " " + keyword + " {\n" | ||
|
|
||
| // Pulled out in converting from a loop to a single condition + block | ||
| // Can reuse the below code when more complex if/else blocks are supported |
Collaborator
There was a problem hiding this comment.
I think we can create a commented out ifElse case for use in future which contains the old code with the loop through each block. Then here we can clean this code up by removing the references to the loop counter since we know it will always be the 0 case for a singular if block.
StarsMmd
reviewed
Sep 26, 2020
|
|
||
| // while loop | ||
| if tokens[0] == "while" { | ||
| // cheat parsing by transforming to an `if` and inserting the additional location and jump |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
ifStatementtake only a single condition & body; more complex branching structures (i.e. if/else) can have their own casesevalTokensXDSreturn an array to simplify while loop compilation as [.location, .ifStatement]looks like a lot of the guts (printing, instruction count, etc.) were there already from work you did before; I really just had to implement the patterns for compilation and decompilation
let me know if this looks reasonable to you