更多表达式的Parsing
简介
上一章节讲述并验证了Parse和Translate普通数学表达式的技术。最后以一个简单Parser作为成果而结束,该parser可以解析任意复杂的数学表达式,但有两个限制:
- 不支持变量,只支持数字字面量
- 数字字面量只支持单个数字
变量
b * b + 4 * a * c
其中a、b、c皆是变量。
要支持变量,只需要在之前的设计上扩展<factor>即可。 之前是:
<factor> ::= <number> | (<expression>)
现在要扩展为:
<factor> ::= <number> | (<expression>) | <variable>
代码改动非常小,只需要在factor解析那儿增加一种peek操作即可实现。