0

编写满足以下要求的“语句”语法:

  • 跳过是一个有效的语句
  • 形式的赋值x := E是一个有效的语句,其中 x 是一个标识符,E 是一个算术表达式
  • 两个语句的组成 S0 ;S1 是一个有效的语句

我有以下解决方案,但不确定它是否正确:

x:: E|skip|s0 E|s1 E
4

2 回答 2

1
S:
  SKIP
| ID ':=' E
| S ';' S
;

E 和 SKIP 必须有另一条规则,ID 是词法标记。

于 2013-03-05T22:09:07.940 回答
0

这个怎么样?我不确定什么会被视为“有效”算术表达式以及什么会被视为有效标识符,但这样的事情怎么样?

S   :: 'skip'
S   :: IDENTIFIER ':=' E
S   :: S | S ';' S

A1  :: '+' | '-'
A2  :: '*' | '/'

NBR :: '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0'
O   :: NBR          /* remove this if arithm. expression only on identifiers */
O   :: IDENTIFIER
O   :: '(' E ')'

F   :: O
F   :: O A1 O

E   :: F A2 F
于 2013-03-05T22:05:53.297 回答