次の要件を満たす「ステートメント」文法を記述します。
- スキップは有効なステートメントです
- フォームの割り当ては
x := E
有効なステートメントです。x は識別子、E は算術式です。 - 2 つのステートメント S0 の構成。S1 は有効なステートメントです
次の解決策がありますが、それが正しいかどうかはわかりません。
x:: E|skip|s0 E|s1 E
次の要件を満たす「ステートメント」文法を記述します。
x := E
有効なステートメントです。x は識別子、E は算術式です。次の解決策がありますが、それが正しいかどうかはわかりません。
x:: E|skip|s0 E|s1 E
S:
SKIP
| ID ':=' E
| S ';' S
;
E には別のルールが必要であり、SKIP と ID は字句トークンです。
これはどう?「有効な」算術式と見なされるものと、有効な識別子と見なされるものについてはわかりませんが、次のようなものはどうですか?
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