라벨(컴퓨터 과학)
Label (computer science)프로그래밍 언어의 라벨은 소스 코드 내의 위치를 식별하는 일련의 문자입니다.대부분의 언어에서 라벨은 식별자의 형태를 취하며, 종종 구두점 문자(예: 콜론) 뒤에 이어집니다.많은 고급 프로그래밍 언어에서 레이블의 목적은 레이블의 수신처 역할을 하는 것입니다.GOTO
스테이트먼트.[1][2]어셈블리 언어에서 라벨은 주소가 가능한 모든 곳에서 사용할 수 있습니다(예를 들어, 의 오퍼랜드).JMP
또는MOV
명령)[3]을 참조해 주세요.또한 파스칼과 그 파생된 변형에 있다.Fortran 및 BASIC과 같은 일부 언어는 [4]숫자 레이블을 지원합니다.라벨은 (디버깅 중 등) 컴파일된 일련의 스테이트먼트로의 진입점을 식별하기 위해서도 사용됩니다.
C
C에서 라벨은 코드의 스테이트먼트를 식별합니다.하나의 문에는 여러 개의 라벨을 포함할 수 있습니다.라벨은 코드의 위치만 나타내며 라벨에 도달해도 실제 실행에는 영향을 주지 않습니다.
기능 라벨
기능 라벨은 식별자와 콜론으로 구성됩니다.이러한 각 라벨은 함수의 문을 가리키며 해당 식별자는 해당 함수 내에서 고유해야 합니다.다른 함수는 레이블에 동일한 이름을 사용할 수 있습니다.라벨 식별자는 독자적인 네임스페이스를 차지합니다.라벨과 같은 이름의 변수와 함수를 가질 수 있습니다.
무효 후우(인트 번호) { 한다면 (번호 < > 0) 에 가다 에러; 막대기(번호); 돌아가다; 에러: 인쇄(하드, "잘못된 숫자입니다!\n"); }
에러는 라벨입니다.goto 문을 사용하면 코드의 라벨이 붙은 문으로 이동할 수 있습니다.1분 후에goto
프로그램 실행은 라벨 뒤에 있는 문장으로 계속됩니다.
스위치 라벨
스위치 문에는 2종류의 라벨을 넣을 수 있습니다.케이스 라벨은 키워드로 구성됩니다.case
에 이어 정수 정수로 평가되는 식입니다.기본 라벨은 다음 키워드로 구성됩니다.default
. 대소문자 라벨은 정수값을 코드의 문과 관련짓기 위해 사용됩니다.스위치 스테이트먼트에 도달하면 프로그램 실행은 스위치 괄호 내의 값과 일치하는 값을 가진 케이스라벨 뒤에 있는 스테이트먼트로 계속됩니다.이러한 케이스 라벨은 없지만 기본 라벨이 있는 경우 기본 라벨 뒤에 있는 문장으로 프로그램 실행이 계속됩니다.기본 라벨이 없는 경우 스위치 후에도 프로그램 실행이 계속됩니다.
전환하다 (죽어버려) { 체납: 인쇄물("이러한 것은,\n"); 브레이크.; 사례. 1: 사례. 3: 사례. 5: 인쇄물('홀수'\n"); 브레이크.; 사례. 2: 사례. 4: 사례. 6: 인쇄물("심지어\n"); 브레이크.; }
단일 스위치 문 내에서 각 케이스라벨과 관련된 정수 상수는 한결같아야 합니다.기본 문이 있을 수도 있고 없을 수도 있습니다.스위치 내 라벨 순서에는 제한이 없습니다.대소문자 레이블 값이 정수 상수에 대해 평가하는 요건은 컴파일러에 최적화를 위한 더 많은 공간을 제공합니다.
예
자바스크립트
JavaScript 언어에서는 구문문 앞에 다음 라벨을 붙일 수 있습니다.
정상: //가장 바깥쪽의 루프에 대한 레이블을 지정합니다. 위해서 (변화하다 i = 0; i < > 4; i++) { 위해서 (변화하다 j = 0; j < > 4; j++) { 한다면 (j === 3 & & i === 2) { 경계.("i=" + i + ", j=" + j); //i=2, j=3 브레이크. 정상; } } } 경계.("i=" + i + ", j=" + j); //i=2, j=3
사용도 가능합니다.break
다음 명령어를 사용하여 코드 블록에서 분리합니다.
정상: { 콘솔.로그.("푸") 콘솔.로그.('바') 브레이크. 정상 콘솔.로그.("바즈") } // 출력 대상: // > foo // > 바
일반적인 리스프
Common Lisp에서는 라벨을 정의하는 방법은 두 가지가 있습니다.첫 번째 문제는tagbody
특수 오퍼레이터라벨은 C와 같이 글로벌 네비게이션을 허용하는 다른 많은 프로그래밍 언어와 구별되므로 이 연산자의 컨텍스트에서만 액세스할 수 있습니다.의 내부tagbody
라벨은 기호로 시작하는 형태로 정의됩니다.go
special form을 사용하면 이들 [5]라벨 간에 제어가 이전됩니다.
(허락하다 ((반복 없음)) (태그바디 개시하다 (인쇄물 '오디오') (설정 반복 0) 증가하다 (인쇄물 반복) (인시프 반복 1) (가세요 확인.) 확인. (한다면 (>= 반복 10) (가세요 끝.) (가세요 증가하다)) 끝. (인쇄물 '완료했다)))
두 번째 방법은 리더 매크로를 활용합니다.#n=
그리고.#n#
오브젝트 바로 뒤에 라벨이 붙어 있는 전자는 오브젝트의 [6]평가치를 나타냅니다.이러한 의미에서 라벨은 변수의 대안을 구성합니다.#n=
"displicate"를 선언하고 초기화합니다.#n#
액세스 할 수 있습니다.자리 표시자 n은 라벨을 식별하는 선택된 부호 없는 10진수 정수를 지정합니다.
(예후 #1="안녕하세요" (인쇄물 #1#))
이와는 별도로, 일부 양식은 특별한 양식을 포함하여 추후 회부를 위한 라벨 선언을 허용하거나 의무화한다.block
이름 짓기를 규정하고 있습니다.loop
식별 가능한 매크로named
절을 클릭합니다.지정된 폼에서 즉시 벗어날 수 있습니다.return-from
특수 오퍼레이터
(블록 마이블록 (고리 위해서 반복 부터 0 하다 (한다면 (>= 반복 10) (로부터의 복귀 마이블록 '완료했다) (인쇄물 반복))))
(고리 이름 지어진 마이루프 위해서 반복 부터 0 하다 (한다면 (>= 반복 10) (로부터의 복귀 마이루프 '완료했다) (인쇄물 반복)))
C와 같은 방법으로 매크로가case
,ccase
,ecase
,[7] typecase
,ctypecase
그리고.etypecase
switch [8]문을 정의합니다.
(허락하다 ((마이밸류 5)) (사례. 마이밸류 (1 (인쇄물 '하나')) (2 (인쇄물 '둘')) ((3 4 5) (인쇄물 "서너댓 개")) (그렇지않으면 (인쇄물 "기타 값"))))
(허락하다 ((마이밸류 5)) (타이프 케이스 마이밸류 (목록. (인쇄물 "리스트")) (스트링 (인쇄물 '끈')) (번호 (인쇄물 "숫자")) (그렇지않으면 (인쇄물 "기타 타입"))))
「 」를 참조해 주세요.
레퍼런스
- ^ C 표준 섹션 6.8.6.1 goto 스테이트먼트
- ^ "GOTO Statement QuickSCREEN". Microsoft. 1988. Retrieved 2008-07-03.
- ^ O. Lawlor. "nasm x86 Assembly". Retrieved 2008-07-03.
- ^ "Differences Between GW-BASIC and QBasic". Archived from the original on 2010-02-10.
- ^ Kent Pitman. "CLHS: Special Operator TAGBODY". Retrieved 2020-08-18.
- ^ Kent Pitman. "CLHS: Section 2.4.8". Retrieved 2020-08-18.
- ^ Kent Pitman. "CLHS: Macro CASE, CCASE, ECASE". Retrieved 2020-08-20.
- ^ Kent Pitman. "CLSH: Macro TYPECASE, CTYPECASE, ETYPECASE". Retrieved 2020-08-20.