1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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)
|
读者来信
✎ 投递您的来信