开发者

How would you interpret this Compiler/Grammar homework question?

I'm working on my compiler homework and I have the following question:

Consider the following grammar:

lexp -> number : (op lexp-seq)

op -> + | - | *

lexp-seq -> lexp-seq lexp | lexp

This grammar can be thought of as representing simple integer arithmetic expressions in LISP=like prefix form. For example the expression 34-3*42 would be written (- 34 (* 3 42)).

What interpretation should be given to the legal expressions (- 2 3 4) and (- 2)? What about the expression (+ 2) and ( 2)?*


Now, I'm not really sure what they mean by "What should the intrepretation be". For example, do they want a derivation?

The first one seems like it would be simple enough:

(- 2 3 4)

(- 1 4)

(- 3)

And the unary (- 2) and (+ 2) I suppose would be interpreted as negative and explicit positive?

I have no clue what (* 2) would be interpreted as?

The derivation w开发者_StackOverfloworks and is easy enough:

lexp -> (op lexp-seq)

-> (* lexp-seq)

-> (* lexp)

-> (* number)

But is this all they are asking for? Or is it asking how I would interpret what (* 2) means semantically?

Please help me decipher my ambiguous homework problem!


In scheme (I think in lisp too) language (* ....) means "multiply all expressions in braces" so (* 2) means simply 2 And (- 2 3 4) means "2 - 3 - 4" which is -5

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜