6.86. kink/program/LOCATION

6.86.1. location型

locationは、 プログラムテキスト中の、Unicodeコードポイントの位置添字である。

locationは次の属性からなる。

• Program: `program`

• Pos: 位置添字を表す整数のnum

不変条件

0 <= Pos <= Program.text.size

例

6.86.1.1. Loc.program

programは、LocのProgram属性を戻す。

6.86.1.2. Loc.pos

posは、LocのPos属性を戻す。

6.86.1.3. Loc.line_num

line_numは、Locの行番号を整数のnumとして戻す。

行番号は、プログラムテキスト中において、Locの前のLF文字の数に1を足したものである。

例

6.86.1.4. Loc.col_num

col_numは、Locの列番号を整数のnumとして戻す。

結果は、行の中における、Locの前のコードポイントの数に1を足したものである。

例

6.86.1.5. Loc.line

lineは、Locのある行をstrとして戻す。

lineは、プログラムテキストの[From, To)の範囲のスライスを戻す。ここで、Fromは行の先頭のコードポイント添字で、Toは次の行の先頭もしくはテキスト末尾のコードポイント添字である。したがって結果の文字列は、末尾にLF文字を含むかもしれない。

例

6.86.1.6. Loc.indicator

indicatorは、行中のLocの場所を示すstrを戻す。

結果のstrはCRやLF文字を含まない。

例

6.86.1.7. Loc.desc

descは、プログラム名、行番号、列番号を叙述するstrを戻す。

例

6.86.1.8. Loc1 == Loc2

== 演算子、つまりop_eqメソッドは、ふたつのlocation値が同値のProgram属性、Pos属性を持つかどうかを戻す。

6.86.1.9. Loc.repr

reprは、デバッグ用途のためにLocのstr表現を戻す。

例

6.86.2. LOCATION.new(Program Pos)

newは、与えられた属性を持つlocationを戻す。

事前条件

Programはprogramでなければならない。

Posは整数のnumでなければならない。

0 <= Pos <= Program.text.size

6.86.3. LOCATION.empty

emptyは、空のプログラム名、空のプログラムテキスト、Pos=0からなるlocationを戻す。

6.86.4. LOCATION.is?(Val)

is?は、Valがlocationであるかどうかを戻す。