2284: 实验5.4 基于S-翻译模式的语义计算

时间限制: C/C++ 1 s      Java/Python 3 s      内存限制: 128 MB      答案正确: 2 / 9     

题目描述

已知表达式文法的S-翻译模式

S E

{ print(E.val) }

E E1 + T

{ E.val := E1 .val + T.val }

E E1 - T

{ E.val := E1 .val - T.val }

E T

{ E.val := T.val }

T T1 * F

{ T.val := T1 .val * F.val }

T T1 / F

{ T.val := T1 .val / F.val }

T F

{ T.val := F.val }

F P^F

{ F.val := P.val ^ F.val }

F P

{ F.val := P.val }

P →( E )

{ P.val := E.val }

P d

{ P.val := d.lexval }

请使用算符优先算法编写基于S-翻译模式的语义计算程序

 

 

 

输入

输入多行算术表达式,输入EOF结束

 

输出

如果能够分析成功,则输出计算结果,保留6位小数,否则输出"syntax error"。

样例输入

2+5*6#
45++520#

样例输出

32.000000
not accept

提示

来源

标签


提交代码






© 2019 JustOJ     中文  English  | l.jiang.1024@gmail.com | Docs | System Info | Telegram Group | Telegram Channel