Exemple #1
0
func (p *parser) parseIfStmt(n *parse.Node) ast.Stmt {
	p.openScope()
	ifStmt := ast.IfStmt{
		If: token.Pos(n.Child(0).Pos()),
	}
	ifStmt.Init, ifStmt.Cond = p.parseInitCond(n.Child(1))
	if blockElse := n.Child(2).Child(0); blockElse.Is(block) {
		ifStmt.Body = p.parseBlock(blockElse, p.topScope)
	} else {
		ifStmt.Body = p.parseBlock(blockElse.Child(1).Child(0), p.topScope)
		ifStmt.Else = p.parseElse(blockElse.Child(1).Child(2))
	}
	p.closeScope()
	return &ifStmt
}