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

时间:2018-01-15 13:12:44

标签: rascal

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

,其中

  1. Uri是任意统一资源标识符(URI)。
  2. OL是整数表达式,其中O给出了文件开头的偏移量,并且&#39; L&#39;给出文件的长度。
  3. BLBC是表示起始行和列的整数。
  4. ECEL是表示结束行和列的整数。
  5. 我目前正在尝试复制loc的实例并修改值(BLBCECEL)。我在做这件事时遇到了一些麻烦。我试过了。

    1. 使用语法定义匹配loc参数。
    2. 尝试访问字段,就好像它们是合格的名称一样。
    3. 显然这些都没有成功。我无法在Rascal文档中找到更多关于这样做的内容。我可以获得有关如何访问这些值的任何指示吗?

      谢谢!

1 个答案:

答案 0 :(得分:2)

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

以下是一个例子:

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初始化为某个源位置,然后我访问此源位置的line的{​​{1}}和column。最后我将开始行设置为3。

希望这有帮助。