Skip to content

最容易理解递归过程的图

txt
parseExpression(LOWEST)
└── left = IntegerLiteral(1)
└── peekToken = +
    └── parseInfixExpression(left = 1)
        └── parseExpression(SUM) // ← 递归
            └── left = IntegerLiteral(2)
            └── peekToken = + (优先级 SUM == SUM,不进入 for 循环)
        ← return 2
    ← return (1 + 2)
← 回到最初的 parseExpression(LOWEST),继续 while
    └── peekToken = +
        └── parseInfixExpression(left = (1 + 2))
            └── parseExpression(SUM)
                └── return IntegerLiteral(3)
            ← return ((1 + 2) + 3)
← return ((1 + 2) + 3)

Last updated: