本文旨在讨论使用递归下降技术计算只含实数、+、-、*、/和()的数学表达式的值的问题,我只是一名大二的学生,为完成数据结构作业而研究该技术,所以了解的很肤浅,欢迎评论。
我们可以使用一种递归的方式来定义数学表达式,首先我写出对一个数学表达式Expression的的递归定义形式:
Expression = Term + Expression | Term - Expression | Term
Term = Factor * Term | Factor / Term | Factor
Factor = (Expression) | 实数
我解释下,每行代表一种表达式的生成规则,中间的竖线“|”意思是或。如:Factor = (Expression) | 实数,意思是一个Factor可以是被括号括起来的一个表达式,或者一个实数。这种定义形式利用的递归的思想。