//if-statement ::= 'if' '(' <expression> ')' '{' <statement>* '}' ('else' '{' <statement>* '}')? private void ParseIfStatement() { Match(new Token(TokenType.Keyword, "if")); Match(new Token(TokenType.Symbol, "(")); ParseExpression(); _codeGenerator.BeginIf(); Match(new Token(TokenType.Symbol, ")")); Match(new Token(TokenType.Symbol, "{")); ParseStatements(); Match(new Token(TokenType.Symbol, "}")); _codeGenerator.PossibleElse(); if (LookAheadToken.Value == "else") { Match(new Token(TokenType.Keyword, "else")); Match(new Token(TokenType.Symbol, "{")); ParseStatements(); Match(new Token(TokenType.Symbol, "}")); } _codeGenerator.EndIf(); }