void Parser::block(std::string l) { while (input.getChar() != '}') { fin(); switch (input.getChar()) { case 'i': doIf(l); break; case 'w': doWhile(); break; case 'l': doLoop(); break; case 'r': doDoWhile(); break; case 'f': doFor(); break; case 'd': doDo(); break; case 'b': doBreak(l); break; default: assignment(); break; } fin(); } }
/* analisa e traduz um bloco de comandos */ void block(int exitLabel) { int follow; follow = 0; while (!follow) { switch (look) { case 'i': doIf(exitLabel); break; case 'w': doWhile(); break; case 'p': doLoop(); break; case 'r': doRepeat(); break; case 'f': doFor(); break; case 'd': doDo(); break; case 'b': doBreak(exitLabel); break; case 'e': case 'l': case 'u': follow = 1; break; default: other(); break; } } }