Пример #1
0
 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;
                }
	}
}