func parseWhileStat(lexer *Lexer) *WhileStat {
	lexer.NextTokenOfKind(TOKEN_KW_WHILE) // while
	exp := parseExp(lexer)                // exp
	lexer.NextTokenOfKind(TOKEN_KW_DO)    // do
	block := parseBlock(lexer)            // block
	lexer.NextTokenOfKind(TOKEN_KW_END)   // end
	return &WhileStat{exp, block}
}
// while exp do block end
while exp do block end
// while exp do block end
func parseWhileStat(lexer *Lexer) *WhileStat {
	lexer.NextTokenOfKind(TOKEN_KW_WHILE) 
	exp := parseExp(lexer)                
	lexer.NextTokenOfKind(TOKEN_KW_DO)    
	block := parseBlock(lexer)            
	lexer.NextTokenOfKind(TOKEN_KW_END)   
	return &WhileStat{exp, block}
}
func parseWhileStat ( lexer * Lexer ) * WhileStat { lexer . NextTokenOfKind ( TOKEN_KW_WHILE ) exp := parseExp ( lexer ) lexer . NextTokenOfKind ( TOKEN_KW_DO ) block := parseBlock ( lexer ) lexer . NextTokenOfKind ( TOKEN_KW_END ) return & WhileStat { exp , block } }
while exp do block end
while exp do block end
// while // exp // do // block // end