我们终于到了这里。评估。在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评估策略 |
---|