2013-03-19 74 views
0

我在PLY中为包含两种子语言的语言编写解析器:“正常”表达式语言和类型注释语言。问题是它们共享一些令牌,并且这两种语言的优先顺序不同。子语言的优先级

例如,在表达式语言a | b, c应相当于(a | b), c(和装置一样在Python),而在类型语言相同的应相当于a | (b, c)(键入或者a或键入b, c,这是一个元组类型为b,类型为c)。

真正的问题比这个更复杂一些,但它仍然基本相同。

在PLY中可以暂时改变优先级吗?如果不是,我会申请另一个解决方案吗?

回答

0

事实证明,您可以在生产结束时以不同的优先顺序使用%prec fakeToken,并在优先顺序列表的正确位置插入facetoken