Calculator

  • Parsing (解析)

    Text -> Lexical analysis (词法分析) -> Token (标记) -> Syntactic analysis (句法分析) -> Expression

  • scheme 可用递归进行句法分析

    • Base case:符号和数字

    • Recursive callscheme_read子表达式,并将其组合起来

    • Syntactic analysis:确定了一个表达的层次结构,可以是嵌套

    • 每次调用scheme_read都会消耗一个表达式的输入标记。

Scheme syntax calculator

  • 计算器表达式的值是递归定义的。

    • Primitive。一个数字对其自身进行评估。

    • Call。调用表达式对其参数值进行运算。

      • +: 参数值之和

      • *: 各项参数的乘积

      • -: 如果只有一个参数,取负。如果有多个参数,则从第一个参数中减去其余参数。

      • /: 如果有一个参数,就把它反过来。如果超过一个参数,则从第一个参数中除以其余部分。

eval function

  • eval函数计算一个表达式的值,它总是一个数字

  • 它是一个通用函数,根据表达式的类型(primitivecall)进行分配。

Interactive Interpreters

  • 读取 —— 执行 — 打印循环

    • 许多编程语言的用户界面是一个交互式解释器。

      1. 打印一个提示

      2. 读取用户输入的文本

      3. 将输入的文本解析为一个表达式

      4. 评价这个表达式

      5. 如果发生任何错误,请报告这些错误。

      6. 否则打印表达式的值,并重复

Last updated

Was this helpful?