summaryrefslogtreecommitdiff
path: root/scripts/gen-s-parser.py
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2023-09-21 12:42:07 -0700
committerGitHub <noreply@github.com>2023-09-21 12:42:07 -0700
commitd491136eeb94b748225be50bdcc86c74cdbd154e (patch)
tree1c1633be02656af1a9c7b05a78a4e9a0928a5fad /scripts/gen-s-parser.py
parentec0f05cb98d6a4e30375a7a6a78966d25fdb5d9c (diff)
downloadbinaryen-d491136eeb94b748225be50bdcc86c74cdbd154e.tar.gz
binaryen-d491136eeb94b748225be50bdcc86c74cdbd154e.tar.bz2
binaryen-d491136eeb94b748225be50bdcc86c74cdbd154e.zip
[Parser] Parse if-else in the new wat parser and IRBuilder (#5963)
Parse both the straight-line and folded versions of if, including the abbreviations that allow omitting the else clause. In the IRBuilder, generalize the scope stack to be able to track scopes other than blocks and add methods for visiting the beginnings of ifs and elses.
Diffstat (limited to 'scripts/gen-s-parser.py')
-rwxr-xr-xscripts/gen-s-parser.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py
index 78637991b..029fe2b0e 100755
--- a/scripts/gen-s-parser.py
+++ b/scripts/gen-s-parser.py
@@ -712,6 +712,9 @@ def instruction_parser(new_parser=False):
trie = Node()
inst_length = 0
for inst, expr in instructions:
+ if new_parser and inst in {"then", "else"}:
+ # These are not real instructions! skip them.
+ continue
inst_length = max(inst_length, len(inst))
trie.insert(inst, expr)