This repository has been archived by the owner on Nov 11, 2021. It is now read-only.
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 switch blocks using integers for comparison. This also adds the switch, case, and break keywords.
In compilation a list is created in the switch's operand. The last 2 elements contain the default case location and the end location. The other elements of the list are the case conditions.
In simulation mode the list is looped through to find the matching case. If no match if found it will jump to either the default case if it exists or the end of the switch block.
In compilation mode all the conditions are checked consecutively until a match is found. If no matching one is found there is a non conditional jump to either the default case or the end of the switch block.
If a case is found without anything on the stack it will be treated as the default case. Since only one default case is possible having more will cause a compile error. A default keyword could be easily added but I wanted to minimize the amount of new keywords added.