2016-10-19 5 views
1

Für das, was ich gerade versuche, muss ich die Zeilennummer aus dem loc Typ bekommen. Informationen von der Lok erhalten

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

Ich kann mit oben den ersten Teil bekommen (...), aber wie kann ich den zweiten Teil und spezifischere erhalten: die Zeilennummer, ich glaube, in diesem Fall wäre es Zeile 1 # .

PS kann jemand mich auf Informationen über die Bedeutung aller Zahlen verweisen, scheint es nicht in der Dokumentation zu finden.

Antwort

1

Um die Zeilennummer zu erhalten, würden Sie unter der Annahme ll.begin.line verwenden.

Allgemeiner angesichts der Lage |file:///randomfile.java|(0,11817,<1,0>,<185,1>) stellen die Zahlen (offset, length, < startingLine, startingColumn >, < endingLine, endingColumn>), so:

  • 0 die offset in die angegebene Datei ist, wo dieser Stelle beginnt;
  • 11817 ist die length durch die Lage bedeckt

Diese erlauben Ihnen einen Ort zu verwenden Teil einer Datei zu identifizieren, zum Beispiel eine bestimmte Klasse oder Methodendefinition.

  • 1 ist die erste Linie (startingLine) in der Lage enthalten
  • 0 ist die erste Spalte (startingColumn) in der Lage enthalten
  • 185 ist die letzte Zeile (endingLine) in der Lage enthalten
  • 1 ist die letzte Spalte (endingColumn), die an dem Standort enthalten ist

Der Offset und die Länge definieren den tatsächlichen Teil der Datei, die von der Position abgedeckt wird, so dass Sie diese als optional anzeigen können, und sie müssen nicht enthalten sein. Es ist auch nicht immer offensichtlich, zumindest was die Spalte betrifft, was der richtige Wert ist, da Tabulatorzeichen in einem Editor auf mehrere Zeichen erweitert werden können.

Zu jedem dieser Teile des Standorts zuzugreifen, verwenden Sie die folgenden Schritte aus:

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 

Sie können weitere Informationen finden Sie hier, einschließlich Dokumentation, wie die anderen Teile des Standorts zugreifen zu können, wie das Schema verwendet in der URI oder den Namen der referenzierten Ressource/Datei: http://tutor.rascal-mpl.org/Rascal/Rascal.html#/Rascal/Expressions/Values/Location/Location.html

+0

Vielen Dank für die ausführliche Antwort. Genau das, wonach ich gesucht habe. Offset in die Datei wird in Bytes oder Zeichen ausgedrückt? –

Verwandte Themen