//while-statement ::= 'while' '(' <expression> ')' '{' <statement>* '} private void ParseWhileStatement() { //TODO: Consider 'break' support, but requires knowing the label //to which we should goto in case of a break (storing it at the //class level in a stack, because we could have nested scopes). Match(new Token(TokenType.Keyword, "while")); Match(new Token(TokenType.Symbol, "(")); _codeGenerator.BeginWhile(); ParseExpression(); _codeGenerator.WhileCondition(); Match(new Token(TokenType.Symbol, ")")); Match(new Token(TokenType.Symbol, "{")); ParseStatements(); Match(new Token(TokenType.Symbol, "}")); _codeGenerator.EndWhile(); }