Python のような言語には、同時 (または「マルチウェイ」) 割り当てがあることを知っています。今日の試験で、私は次のような問題に出くわしました
a,b = 1, 1+0;
が渡された場合、問題なく解析されますがエラーが返されるように、同時割り当て用の文法の生成を記述a,b,c = 1, 1+0
します (つまり、id の数は式と同じである必要があります)。エラーは構文エラーである必要があります。
私はこれで理解しました:
文法の属性を記述する必要はありません (構文のみだったため)。
私は助けになるかもしれないヒントをあちこち探してみましたが、文法の書き方を教えられた方法でそれを解決する方法はまだありません. これは私がこれまでに持っているものです:
P -> id Id_Tail = exp exp_Tail
Id_Tail -> , id Id_Tail
Id_Tail -> ε
exp_Tail -> , exp exp_Tail
exp_Tail -> ε
exp -> //assume this is is defined well enough to allow for all type of expressions that will generate/have a num (value) that is allowed to be assigned to the respective id
ただし、これにより、必要な構文エラーが生成されることはありません (id よりも多くの式が生成され続ける可能性があります)。