注: ·语法制导翻译仅对每一产生式定义了相应的 语义,而未对如何使用产生式进行限定,所 以这种翻译的模式,既可用于自上而下的分 析,也可用于自下而上的分析,不依赖于实 现语法分析的具体方法
注: ❖ 语法制导翻译仅对每一产生式定义了相应的 语义,而未对如何使用产生式进行限定,所 以这种翻译的模式,既可用于自上而下的分 析,也可用于自下而上的分析,不依赖于实 现语法分析的具体方法
8.、3逆波兰表示法(后缀表示法) 波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的 种表示法。 概念 一般,若e1,e2为任意的后缀表达式,©为任意 双目运算符,则用⊙作用于e1和e2所代表的结果 用后缀式e1e2⊙表示。 推而广之,©为k目运算符,则O作用于 e1e2…ek的结果用e1e2…ek回来表示
波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的 一种表示法。 一般,若e1,e2为任意的后缀表达式,Θ 为任意 双目运算符,则用Θ作用于e1和e2所代表的结果 用后缀式e1e2 Θ表示。 推而广之, Θ为k目运算符,则Θ作用于 e1e2…ek的结果用e1e2…ek Θ来表示。 概念
示例 a*(b+c)→abc+* ●(a+b)*(c+d)→ab+cd+* 若用?表示if-then-else,则 OIf a then if c-d then a+c else a*c else a+b→acd-ac+ac*?ab+?
⚫ a * ( b + c ) → abc+* ⚫(a + b)*(c + d) → ab + cd +* 若用?表示if-then-else,则 ⚫If a then if c-d then a+c else a*c else a+b → a cd- ac+ ac*? ab+? 示例
优点: 易于计算机处理表达式
易于计算机处理表达式 优点:
后缀式求值 使用一个栈(软件栈或者硬件栈)来求值。 求值过程: 从左到右扫描后缀式,每碰到运算量就把它推进 栈,每碰到k目运算符就把它作用于栈顶的k个项, 并用运算结果来代替这k个项
使用一个栈(软件栈或者硬件栈)来求值。 求值过程: 从左到右扫描后缀式,每碰到运算量就把它推进 栈,每碰到k目运算符就把它作用于栈顶的k个项, 并用运算结果来代替这k个项