Comefrom文プログラミング言語におけるcomefrom文(カムフロム文、英: comefrom statement)とは、コード内の任意のポイント(専らラベルで指定される)から、その 概要コード内の移動元のポイントは、通常 comefrom文の簡単な例" Python gotoモジュールでは、デバッガフックを使用してcomefrom文を実装できる[1](後述)。また、Linuxカーネルの構成オプション CONFIG_JUMP_LABEL で使用されるgcc機能"asm goto"でも実装できる。 no-opの場所は保存されており、no-opの後に命令に戻る実行可能フラグメントへのジャンプに置き換えられる。 歴史
comefrom文は最終的に、難解プログラミング言語の1つであるINTERCALの変種であるC-INTERCALに、さらに曖昧な'computed
2004年4月1日、Richie Hindleが、Python用の 実用的な用途BASIC以下は、" 10 COMEFROM 40
20 INPUT "WHAT IS YOUR NAME? "; A$
30 PRINT "HELLO, "; A$
40 REM
このプログラムは、ユーザに名前を質問し、入力された名前に対し挨拶をするという動作を繰り返す。行40の命令" Python以下に、joke gotoモジュールがインストールされたPythonでの完全に実行可能な例(デバッガフックを使用してプログラムの実行を制御する)を示す。 from goto import comefrom, label
comefrom .repeat
name = raw_input('What is your name? ')
if name:
print("Hello", name)
label .repeat
print("Goodbye!")
Ruby以下に、Intercal comefrom文のRubyでの実装を示す。 $come_from_labels = {}
def label(l)
if $come_from_labels[l]
$come_from_labels[l].call
end
end
def come_from(l)
callcc do |block|
$come_from_labels[l] = block
end
end
OS/360 Fortran GOS/360のFortran Gコンパイラには、デバッグパケット機能がある。その"AT"文は、制御フローをデバッグブロックに渡すという点でcomefrom文に似ている。ブレークポイントは一般的に似ている[4]。
INTEGER SOLON, GFAR, EWELL
.
.
.
10 SOLON = GFAR * SQRT(FLOAT(EWELL))
11 IF (SOLON) 40, 50, 60
.
.
.
DEBUG UNIT(3)
AT 11
DISPLAY GFAR, SOLON, EWELL
END
DIMENSION STOCK(1000),OUT(1000)
.
.
.
DO 30 I=1, 1000
25 STOCK(I)=STOCK(I) - OUT(I)
30 CONTINUE
35 A = B + C
.
.
.
DEBUG UNIT(3)
AT 35
DISPLAY STOCK
END
10 A = 1.5
12 L = 1
15 B = A + 1.5
20 DO 22 I = 1,5
.
.
.
22 CONTINUE
25 C = B + 3.16
30 D = C/2
STOP
.
.
.
DEBUG UNIT(3), TRACE
C DEBUG PACKET NUMBER 1
AT 10
TRACE ON
C DEBUG PACKET NUMBER 2
AT 20
TRACE OFF
DO 35 I = 1,3
.
.
.
35 CONTINUE
TRACE ON
C DEBUG PACKET NUMBER 3
AT 30
TRACE OFF
END
関連項目
comefrom文に類似した概念
脚注
外部リンクInformation related to Comefrom文 |