Differences between revisions 4 and 5
Revision 4 as of 2021-02-16 15:50:13
Size: 367
Editor: zbjxb
Comment:
Revision 5 as of 2021-02-16 17:08:47
Size: 760
Editor: zbjxb
Comment:
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:

{{{
    b * b + 4 * a * c
}}}
其中a、b、c皆是变量。

要支持变量,只需要在之前的设计上扩展<factor>即可。
之前是:
{{{
    <factor> ::= <number> | (<expression>)
}}}
现在要扩展为:
{{{
    <factor> ::= <number> | (<expression>) | <variable>
}}}
代码改动非常小,只需要在factor解析那儿增加一种peek操作即可实现。

更多表达式的Parsing

简介

上一章节讲述并验证了Parse和Translate普通数学表达式的技术。最后以一个简单Parser作为成果而结束,该parser可以解析任意复杂的数学表达式,但有两个限制:

  1. 不支持变量,只支持数字字面量
  2. 数字字面量只支持单个数字

变量

    b * b + 4 * a * c

其中a、b、c皆是变量。

要支持变量,只需要在之前的设计上扩展<factor>即可。 之前是:

    <factor> ::= <number> | (<expression>)

现在要扩展为:

    <factor> ::= <number> | (<expression>) | <variable>

代码改动非常小,只需要在factor解析那儿增加一种peek操作即可实现。

compiler/Let's build a compiler/ch3 (last edited 2021-03-17 16:15:47 by zbjxb)