我正在使用JParsec3创建DSL。解析/链接分两个阶段完成:
在第1阶段创建的对象可以引用尚未解析的其他对象,因此传递2次。 现在,对于链接错误消息,我需要将用户发送到文件中它们引用不存在的项目的位置。为此,我需要将位置附加到中间对象。
我该怎么做?
谢谢!
答案 0 :(得分:0)
这似乎是一个非常受欢迎的主题,因为有一些PR和与此相关的问题。这是最新的https://github.com/abailly/jparsec/pull/16,它发布了2.1(在maven中心提供)。有一个冗长的讨论(https://github.com/abailly/jparsec/issues/5),设想了各种解决方案,但我们决定不包括Locatable
功能(但是?)。
所以基本上,从2.1开始,您可以使用withSource()
组合器或返回流中已解析位置的“老式”INDEX解析器。以下是来自@fluentfuture的提案:
Mapper.curry(LocationAnnotated.class).sequence(Parsers.INDEX, parser, Parsers.INDEX);
public class LocationAnnotated<T> {
public LocationAnnotated(int begin, T value, int end) {...}
}