Size: 367
Comment:
|
Size: 760
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可以解析任意复杂的数学表达式,但有两个限制:
- 不支持变量,只支持数字字面量
- 数字字面量只支持单个数字
变量
b * b + 4 * a * c
其中a、b、c皆是变量。
要支持变量,只需要在之前的设计上扩展<factor>即可。 之前是:
<factor> ::= <number> | (<expression>)
现在要扩展为:
<factor> ::= <number> | (<expression>) | <variable>
代码改动非常小,只需要在factor解析那儿增加一种peek操作即可实现。