c++实现算符优先关系表的构造
时间: 2023-05-29 18:02:22 浏览: 157
C++运算符优先级表格
算符优先关系表是用于描述运算符优先级的表格,其中行表示栈顶元素的优先级,列表示当前输入元素的优先级,表格中的关系描述了栈顶元素与输入元素之间的优先关系。
算符优先关系表的构造可以分为以下几个步骤:
1. 定义终结符和非终结符
算符优先文法中需要定义终结符和非终结符,常见的终结符包括运算符和括号,常见的非终结符包括表达式和运算。
2. 根据文法构造FIRST集和FOLLOW集
在确定算符优先关系表之前,需要先根据文法构造FIRST集和FOLLOW集。FIRST集表示一个文法符号能够产生的开始终结符集合,FOLLOW集表示一个文法符号能够跟随其后的终结符集合。
3. 构造优先关系矩阵
优先关系矩阵是算符优先关系表的核心,它描述了运算符之间的优先关系。在构造优先关系矩阵时,需要遍历所有的终结符和运算符,比较它们之间的优先级关系。
4. 填充优先关系矩阵
根据优先关系矩阵的定义,优先关系矩阵应该填充为 >、=、< 或空,以表示运算符之间的优先关系。在填充优先关系矩阵时,需要根据终结符和运算符的优先级关系,以及它们之间的FIRST和FOLLOW集合进行判断。
5. 检查算符优先关系表的合法性
在构造算符优先关系表之后,需要检查它的合法性,确保每个终结符和运算符之间只有一种优先关系,且没有循环依赖关系。
6. 应用算符优先关系表
将算符优先关系表应用于表达式的求值中,根据算符优先关系表的优先关系,决定运算符的结合顺序和优先级。
阅读全文