从 loc 获取信息
Getting info from loc
对于我现在要做的事情,我需要从 loc
类型中获取行号。
|file:///randomfile.java|(0,11817,<1,0>,<185,1>)
我可以通过使用 top(...) 获取第一部分,但是我如何获取第二部分以及更具体的内容:行号,我相信在这种情况下它将是第 1 行。
PS 谁能告诉我有关所有数字含义的信息,似乎无法在文档中找到它。
要获取行号,假设该位置称为 l
,您将使用 l.begin.line
.
更一般地说,给定位置 |file:///randomfile.java|(0,11817,<1,0>,<185,1>)
,数字代表 (offset, length, < startingLine, startingColumn >, < endingLine, endingColumn> )
,因此:
0
是给定文件中此位置开始的 offset
;
11817
是 location 覆盖的 length
这些允许您使用位置来标识文件的一部分,例如特定的 class 或方法定义。
1
是包含在 location 中的第一行 (startingLine
)
0
是位置 中包含的第一列 (startingColumn
)
185
是位置 中包含的最后一行 (endingLine
)
1
是位置 中包含的最后一列 (endingColumn
)
偏移量和长度充分定义了该位置覆盖的文件的实际部分,因此您可以将它们视为可选的,并且不需要包含它们。它也不总是很明显,至少对于列来说,正确的值是什么,因为制表符可以在编辑器中扩展为多个字符。
要访问位置的每个部分,请使用以下内容:
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).offset;
int: 0
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).length;
int: 11817
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin;
tuple[int line,int column]: <1,0>
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin.line;
int: 1
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin.column;
int: 0
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end;
tuple[int line,int column]: <185,1>
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end.line;
int: 185
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end.column;
int: 1
您可以在此处找到更多详细信息,包括有关如何访问该位置其他部分的文档,例如 URI 中使用的方案或引用的名称 resource/file:http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Expressions/Values/Location/Location.html
对于我现在要做的事情,我需要从 loc
类型中获取行号。
|file:///randomfile.java|(0,11817,<1,0>,<185,1>)
我可以通过使用 top(...) 获取第一部分,但是我如何获取第二部分以及更具体的内容:行号,我相信在这种情况下它将是第 1 行。
PS 谁能告诉我有关所有数字含义的信息,似乎无法在文档中找到它。
要获取行号,假设该位置称为 l
,您将使用 l.begin.line
.
更一般地说,给定位置 |file:///randomfile.java|(0,11817,<1,0>,<185,1>)
,数字代表 (offset, length, < startingLine, startingColumn >, < endingLine, endingColumn> )
,因此:
0
是给定文件中此位置开始的offset
;11817
是 location 覆盖的
length
这些允许您使用位置来标识文件的一部分,例如特定的 class 或方法定义。
1
是包含在 location 中的第一行 (0
是位置 中包含的第一列 (185
是位置 中包含的最后一行 (1
是位置 中包含的最后一列 (
startingLine
)
startingColumn
)
endingLine
)
endingColumn
)
偏移量和长度充分定义了该位置覆盖的文件的实际部分,因此您可以将它们视为可选的,并且不需要包含它们。它也不总是很明显,至少对于列来说,正确的值是什么,因为制表符可以在编辑器中扩展为多个字符。
要访问位置的每个部分,请使用以下内容:
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).offset;
int: 0
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).length;
int: 11817
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin;
tuple[int line,int column]: <1,0>
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin.line;
int: 1
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).begin.column;
int: 0
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end;
tuple[int line,int column]: <185,1>
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end.line;
int: 185
rascal>|file:///randomfile.java|(0,11817,<1,0>,<185,1>).end.column;
int: 1
您可以在此处找到更多详细信息,包括有关如何访问该位置其他部分的文档,例如 URI 中使用的方案或引用的名称 resource/file:http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Expressions/Values/Location/Location.html