我正在PLY中编写一个解析器,用于包含两个子语言的语言:“普通”表达式语言和类型注释语言。问题是他们共享一些令牌,这两种语言的优先级不同。
例如,表达式语言a | b, c
应该等同于(a | b), c
(并且与Python中的相同),而在类型语言中,它应该等同于a | (b, c)
(键入a
或键入b, c
,这是一个类型为b
且类型为c
的成员的元组。)
真正的问题比这更复杂,但它仍然基本相同。
PLY暂时可以更改优先权吗?如果没有,我会申请另一种解决方案吗?
答案 0 :(得分:0)
事实证明,您可以在生产结束时使用%prec fakeToken
使用不同的优先级,并在优先级列表中的正确位置插入facetoken
。