如何构建一致的位置?

时间:2015-05-27 07:27:20

标签: rascal

典型的位置构造如下:

|URI|(offset,length,<begin_line,begin_col>,<end_line,end_col>)

偏移&lt; begin_line,begin_col&gt; 之间存在关系,因为 offset 是与&LT; begin_line,begin_col&GT; 的。同意偏移+长度&lt; end_line,end_col&gt;

问题是我们是否可以从个字符获得&lt; line,col&gt; ,反之亦然,以便我们可以构建一致的位置?

2 个答案:

答案 0 :(得分:0)

列和行信息是可选的。您可以使用偏移和长度。 Eclipse和支持偏移的IO函数都可以在偏移和长度字段上工作。

我认为@jurgenv可能会有更多关于何时添加列和行偏移的详细信息。

答案 1 :(得分:0)

通常,如果不访问原始文件,则无法从另一个派生一个,这就是为什么偏移/长度和行/列信息必须以loc值表示。

因此,信息的制作者通常可以访问文件或源,并且应该能够计算这两种类型的信息。如果这是不可能的,那么就像@ davy-landman所说生产者可以默认只使用偏移/长度信息。

旁注:偏移和长度以字符计算,而非字节​​或特定编码的任何内容。对于行和列也是如此。

附注:一些编辑使用偏移/长度索引,其他编辑使用行/列索引,这是首先在loc中使用这两种类型的主要动机。