我知道像 Python 这样的语言有同时(或“多路”)分配。今天在考试中遇到了一个类似的问题
为同时赋值编写一个语法的产生式,这样如果
a,b = 1, 1+0;
通过,它会很好地解析但a,b,c = 1, 1+0
会返回错误(也就是说ids的数量需要与表达式相同)?错误应该是语法错误。
我是这样理解的:
您不需要为语法编写属性(因为它只是语法)。
我已经尝试并到处寻找可能对我有帮助的提示,但我仍然看不出用我被教导如何编写语法的方式来解决它。这是我到目前为止所拥有的:
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 更多的表达式)。