diff options
Diffstat (limited to 'src/emscripten-optimizer/parser.h')
-rw-r--r-- | src/emscripten-optimizer/parser.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/emscripten-optimizer/parser.h b/src/emscripten-optimizer/parser.h index 6b2fa2faa..c805ca9f6 100644 --- a/src/emscripten-optimizer/parser.h +++ b/src/emscripten-optimizer/parser.h @@ -386,6 +386,7 @@ class Parser { else if (frag.str == CONTINUE) return parseContinue(src, seps); else if (frag.str == SWITCH) return parseSwitch(src, seps); else if (frag.str == NEW) return parseNew(src, seps); + else if (frag.str == FOR) return parseFor(src, seps); dump(frag.str.str, src); abort(); return nullptr; @@ -492,6 +493,26 @@ class Parser { return Builder::makeWhile(condition, body); } + NodeRef parseFor(char*& src, const char* seps) { + skipSpace(src); + assert(*src == '('); + src++; + NodeRef init = parseElement(src, ";"); + skipSpace(src); + assert(*src == ';'); + src++; + NodeRef condition = parseElement(src, ";"); + skipSpace(src); + assert(*src == ';'); + src++; + NodeRef inc = parseElement(src, ")"); + skipSpace(src); + assert(*src == ')'); + src++; + NodeRef body = parseMaybeBracketed(src, seps); + return Builder::makeFor(init, condition, inc, body); + } + NodeRef parseBreak(char*& src, const char* seps) { skipSpace(src); Frag next(src); |