我正在为一种由两种子语言组成的语言在 PLY 中编写解析器:“普通”表达式语言和类型注释语言。问题是它们共享一些标记,并且两种语言之间的优先级不同。
例如,在表达式语言中a | b, c
应该等价于(a | b), c
(并且与在 Python 中的含义相同),而在类型语言中应该等价于a | (b, c)
( typea
或 type b, c
,即具有 typeb
和 type成员的元组c
)。
真正的问题比这要复杂一些,但基本上还是一样的。
在 PLY 中是否可以临时更改优先级?如果没有,我可以应用另一种解决方案吗?