Skip to content

Latest commit

 

History

History
38 lines (30 loc) · 1.49 KB

File metadata and controls

38 lines (30 loc) · 1.49 KB

3.1赋予符号意义

我们终于到了这里。评估。在REPL中的E并且是生产源代码时解释器最后要做的事情。这是让代码变得有意义的地方。没有评估器的话,一个像1+2的表达式只是表达一系列字符,tokens或者一个树的结构。这并不意味着什么。评估,当然是1+2变成3.5>1变成true,5<1变成false并且puts("Hello World!")变成了我们都知道的友好信息。

解释其中的评估器定义了编程语言是如何做解析工作的。

let num = -5;
if (num) {
    retuan a;
} else {
    return b;
} 

这是否返回a或b取决于解释器的评估过程的决定整数5是否为真。在某些语言中它是真实的,在其他语言中我们需要使用一个表达式来产生像5!=0 这样的布尔值。

考虑以下这样:

let one = fn() {
    printLine("one");
    return 1;
};

let two = fn() {
    printLine("two");
    return 2;
};

add(one(), two());

这是先输出一然后输出两个还是反过来?它取决于它解释器的实现以及它的顺序计算调用表达式中的参数。

在这个章节将会由许多像这样的小选择,在这儿我们得到决定Monkey将如何工作和我们的解析器如何评估Monkey源代码的。

在我告诉你编写解析器很有趣后,你可能会持怀疑态度,但请相信我:这就是最好的部分。这是Monkey编程语言诞生的地方,源代码加快并开始呼吸。

< 2.9RPPL > 3.2评估策略