code: func (t *tree) parseIf(token item) ast.Node {
  	var conds []*ast.IfCondNode
  	var isElse = false
  	for {
  		var condExpr ast.Node
  		if !isElse {
  			condExpr = t.parseExpr(0)
  		}
  		t.expect(itemRightDelim, "if")
  		var body = t.itemList(itemElseif, itemElse, itemIfEnd)
  		conds = append(conds, &ast.IfCondNode{token.pos, condExpr, body})
  		t.backup()
  		switch t.next().typ {
  		case itemElseif:
  			// continue
  		case itemElse:
  			isElse = true
  		case itemIfEnd:
  			t.expect(itemRightDelim, "/if")
  			return &ast.IfNode{token.pos, conds}
  		}
  	}
  }
docs: // "if" has just been read.