从loc获取信息

时间:2016-10-19 20:19:07

标签: rascal

对于我现在要做的事情,我需要从loc类型中获取行号。

|file:///randomfile.java|(0,11817,<1,0>,<185,1>)

我可以通过使用top(...)来获得第一部分,但是如何获得第二部分以及更具体的部分:行号,我相信在这种情况下它将是#1行。

PS有人可以指导我查询所有数字含义的信息,似乎无法在文档中找到它。

1 个答案:

答案 0 :(得分:1)

要获取行号,假设该地点名为boolean okay; do { System.out.printf("What is your question?\n"); questionStr = keyboard.nextLine(); int length = questionStr.length(); if (questionStr.length() == 0) { System.out.println("Not allowed."); okay = false; } else if (!(questionStr.charAt(length - 1) == '?')) { System.out.println("Add question mark."); okay = false; } else if (questionStr.length() > 60) { okay = false; } okay = true; } while (!okay); ,您可以使用l

更一般地说,给定位置l.begin.line,数字代表|file:///randomfile.java|(0,11817,<1,0>,<185,1>),所以:

  • (offset, length, < startingLine, startingColumn >, < endingLine, endingColumn> )是此位置开始的给定文件中的0;
  • offset
  • 所涵盖的11817

这些允许您使用位置来标识文件的一部分,例如特定的类或方法定义。

  • length是位置
  • 中包含的第一行(1
  • startingLine是位置
  • 中包含的第一列(0
  • startingColumn是位置
  • 中包含的最后一行(185
  • endingLine是位置
  • 中包含的最后一列(1

偏移量和长度足以定义该位置所覆盖的文件的实际部分,因此您可以将它们视为可选项,并且不需要包含它们。至少在列中,它也不总是显而易见的,正确的值是什么,因为制表符可以在编辑器中扩展为多个字符。

要访问该位置的每个部分,请使用以下内容:

endingColumn

您可以在此处找到更多详细信息,包括有关如何访问位置其他部分的文档,例如URI中使用的方案或引用的资源/文件的名称:http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Expressions/Values/Location/Location.html