2017 Retrieva, Inc. 23 let x = 5 + 5; [ LET, IDENTIFIER(“x”), EQUAL_SIGN, INTEGER(5), PLUS_SIGN, INTEGER(5), SEMICOLON, ] let ⽂ x 中置演算⼦式 5 + 5 x //=> 10
Inc. 49 function eval(node, env) { switch node.type { case LetStatement: val = eval(node.value, env) env.set(node.name.value, val) case Identifier: val = env.get(node.value) if val == null { return error("Identifier not found") } return val …