在 Rascal 中设置 loc 类型的行属性?

Setting line attributes for loc type in Rascal?

位置 (loc) 的语法定义(根据 tutor.rascal.org)为:| Uri | ( O, L, <BL,BC>, <EL,EC> )

哪里

  1. Uri 是任意的统一资源标识符 (URI)。
  2. OL 是整数表达式,其中 O 给出文件开头的偏移量,'L' 给出文件的长度。
  3. BLBC 是表示开始行和列的整数。
  4. ECEL是表示结束行和列的整数。

我目前正在尝试复制 loc 的实例并修改值(BLBCECEL)。我在做这件事时遇到了一些麻烦。我试过了。

  1. 使用语法定义匹配 loc 参数的模式。
  2. 正在尝试像访问限定名称一样访问字段。

显然 none 这些都解决了。我无法在 Rascal 文档中找到更多关于这样做的信息。我可以获得有关如何访问这些值的任何指示吗?

谢谢!

访问和修改源位置字段的方式与其他数据类型的值相同。有关所有可用字段的信息,请参阅源位置文档。

这是一个例子:

rascal>l = |project://rascal/src/org/rascalmpl/library/lang/rascal/types/CheckTypes.rsc|(243216,14,<4598,8>,<4598,22>);
loc: |project://rascal/src/org/rascalmpl/library/lang/rascal/types/CheckTypes.rsc|(243216,14,<4598,8>,<4598,22>)
rascal>l.begin.line
int: 4598
rascal>l.begin.column
int: 8
rascal>l.begin.line=3;
loc: |project://rascal/src/org/rascalmpl/library/lang/rascal/types/CheckTypes.rsc|(243216,14,<3,8>,<4598,22>)

首先我将 l 初始化到某个源位置,接下来我访问此源位置的 beginlinecolumn。最后我将开始行设置为 3.

希望这对您有所帮助。