我正在编写我的编译器作业,我有以下问题:
考虑以下语法:
lexp - > 数字 :( op lexp-seq)
op - > + | - | *
lexp-seq - > lexp-seq lexp | lexp
这个语法可以被认为是表示LISP = like前缀形式的简单整数算术表达式。例如,将写出表达式34-3 * 42( - 34(* 3 42))。
应该对法律用语( - 2 3 4)和( - 2)作出什么解释?表达式(+ 2)和( 2)怎么样?*
现在,我不确定他们的意思是“代表什么应该是什么”。例如,他们想要推导吗?
第一个似乎很简单:
( - 2 3 4)
( - 1 4)
( - 3)
我认为一元( - 2)和(+ 2)会被解释为消极和显性正面吗?
我不知道(* 2)会被解释为什么?
推导起作用并且很容易:
lexp - > (op lexp-seq)
- > (* lexp-seq)
- > (* lexp)
- > (*号码)
但这是他们所要求的吗?或者它是在问我如何解释(* 2)在语义上意味着什么?
请帮我解读我模糊的作业问题!
答案 0 :(得分:1)
在方案中(我也认为在lisp中)语言(* ....)意味着“将所有表达式乘以大括号”,因此(* 2)意味着简单2 并且( - 2 3 4)表示“2 - 3 - 4”,其为-5