Analizando el operador de asignación "->" en R

Mi pregunta es sobre el análisis de expresiones en lenguaje R. Déjame saltar directamente a un ejemplo:

fun_text <- c("
0 -> var
f1 <- function()
{
    0 -> sum_var
    sum_var2 = 0
    sum_var3 <- 0
}

(function()
{
    0 -> sum_var
    sum_var2 = 0
    sum_var3 <- 0
})->f2

f3 = function(x)
{
  0 -> sum_var
  sum_var2 = 0
  sum_var3 <- 0
}

")

fun_tree <- parse(text=fun_text)
fun_tree 
fun_tree[[1]]
fun_tree[[2]]
fun_tree[[3]]
fun_tree[[4]]

Después de eso, obtenemos esos resultados:

expression(0 -> var, f1 <- function()
{
    0 -> sum_var
    sum_var2 = 0
    sum_var3 <- 0
}, (function()
{
    0 -> sum_var
    sum_var2 = 0
    sum_var3 <- 0
})->f2, f3 = function(x)
{
    0 -> sum_var
    sum_var2 = 0
    sum_var3 <- 0
})

y

var <- 0

y

f1 <- function() {
    sum_var <- 0
    sum_var2 = 0
    sum_var3 <- 0
}

y

f2 <- (function() {
    sum_var <- 0
    sum_var2 = 0
    sum_var3 <- 0
})

y

f3 = function(x) {
    sum_var <- 0
    sum_var2 = 0
    sum_var3 <- 0
}

Como puede ver, todos los operadores de asignación "->" se cambian a "<-", pero no en el primer ejemplo (solo "fun_tree"). Mi pregunta es: ¿por qué es eso? y ¿puedo estar seguro de que siempre obtengo el operador "<-" en el árbol de sintaxis, así no puedo molestarme en implementar el caso "->"?

Respuestas a la pregunta(2)

Su respuesta a la pregunta