如何增加令牌的大小。文件?

时间:2017-11-06 19:07:18

标签: go abstract-syntax-tree

我正在使用go/ast向文件中添加一些内容的重写器。一切都运作良好,除了评论,go/ast是众所周知的。但部分问题似乎是它正在积极密谋反对我修复它的努力。

我在文件末尾附近插入的内容大于文件中剩余的内容。在那之后还有其他几个func,他们对它们有评论。我使用访问者为我的更新计算了适当的Pos,然后使用新的Pos更新剩余的节点,这样他们就不会失去与评论的关联,但现在评论会被移动上面我的插入!

在追踪执行后,我发现func (s *FileSet) PositionFor中的position.go在剩余评论的位置上返回0,因为他们的新Pos超出了关联的token.File数据。那么,看起来我需要更新size上的token.File,但它是一个小写字段,所以我不能直接这样做,并且似乎没有任何方法那会为我做的。 size似乎是不可变的,仅在构造时设置,这是奇怪的,因为token.File结构的其他部分可以更新。

我如何解决这个问题?我只是希望我的评论打印出他们应该的位置,但每当我认为我已经解决了问题时,其背后隐藏着一些其他问题,现在我遇到了一个不可改变的问题!

0 个答案:

没有答案