0
写了一个“声明”语法满足以下要求:编写符合下列要求的明确声明的语法:
- 跳跃是一个有效的语句
- 分配形式
x := E
的是一个有效的声明,其中x是一个标识符,E是一个 算术表达式 - 两个语句的组成S0; S1是一个有效的语句
我有以下的解决方案,但我不知道这是否是正确的:
x:: E|skip|s0 E|s1 E
写了一个“声明”语法满足以下要求:编写符合下列要求的明确声明的语法:
x := E
的是一个有效的声明,其中x是一个标识符,E是一个 算术表达式我有以下的解决方案,但我不知道这是否是正确的:
x:: E|skip|s0 E|s1 E
这个怎么样?我不确定什么会被视为“有效”的算术表达式,什么会被认为是有效的标识符,但是这样的事情呢?
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
S:
SKIP
| ID ':=' E
| S ';' S
;
必须有针对E其他规则和SKIP和ID是词法标记。
听起来我们可以假设表达式已经被定义为E,并且不需要在赋值关心的语法部分中定义。虽然我可能是错的。 – cHao 2013-03-05 22:21:24