식별자(컴퓨터 언어)
Identifier (computer languages)이 문서에는 Unicode 문자와 UAX31 권장 사항에 대한 정보가 없습니다.은 에 될 수 . (2021년 3월) |
컴퓨터 프로그래밍 언어에서 식별자는 언어의 엔티티를 명명하는 어휘 토큰(기호라고도 하지만 기호 원시 데이터 유형과 혼동해서는 안 된다)입니다.식별자가 나타낼 수 있는 엔티티의 종류에는 변수, 데이터 유형, 라벨, 서브루틴 및 모듈이 있습니다.
어휘형
식별자를 구성하는 문자 시퀀스는 언어의 어휘 문법에 따라 달라집니다.일반적인 규칙은 영숫자 시퀀스입니다.밑줄도 사용할 수 있습니다(일부 언어에서는 _는 사용할 수 없습니다).숫자로 시작할 수 없는 조건(정수 리터럴과 혼동하지 않도록 함으로써 렉싱을 단순화합니다).foo, foo1, foo_bar, _foo허용됩니다만,1foois not – 이것은 이전 버전의 C 및 C++, Python 및 기타 많은 언어에서 사용된 정의입니다.이러한 언어의 최신 버전은 다른 많은 현대 언어와 함께 식별자에서 더 많은 유니코드 문자를 지원합니다.단, 일반적인 제약사항은 공백 문자 및 언어 연산자를 허용하지 않는다는 것입니다.이것에 의해, 토큰화가 자유 형식 및 컨텍스트 프리하게 되어 토큰화가 간략화됩니다.예를 들어, 금지,+바이너리 연산으로서의 사용으로 인한 식별자에서는a+b그리고.a + b같은 토큰화가 가능하지만 허용되면a+b추가가 아닌 식별자일 것입니다.식별자의 공백은 특히 문제가 있습니다. 식별자에 공백이 허용되면 다음과 같은 절이 있습니다.if rainy day then 1합법입니다.rainy day식별자로 사용하지만 토큰화하려면 if 절의 조건에 있는 구문 컨텍스트가 필요합니다.ALGOL 68이나 ALGOL 바리안트 등 일부 언어에 따라서는 식별자에 공백이 허용됩니다.예를 들어, 다음과 같은 유효한 스테이트먼트가 있습니다.real half pi;라고 할 수 있다..real. half pi;(구체적으로는 스트로핑을 통해 굵은 글씨로 나타냅니다).ALGOL에서는 키워드가 구문적으로 구별되기 때문에 충돌이나 모호성의 위험이 없고, 라인 재구성 단계에서 공백이 제거되며, 소스가 스캐너 없는 파싱으로 처리되므로 렉싱이 상황에 따라 달라질 수 있기 때문에 가능했습니다.
대부분의 언어에서 일부 문자 시퀀스는 식별자의 어휘 형식을 가지지만 키워드로 알려져 있습니다. 예를 들어 다음과 같습니다.ifif 절의 키워드가 되는 경우가 많지만 어휘적으로는 와 같은 형식입니다.ig또는foo즉, 일련의 편지들.이 오버랩은 다양한 방법으로 처리할 수 있습니다.이러한 오버랩은 토큰화 및 해석을 단순화하는 ID가 되는 것을 금지할 수 있습니다.이러한 오버랩은 둘 다 예약된 단어일 수 있습니다.또한 스트로핑 등 다른 방법으로 구별될 수도 있습니다.또한 키워드 시퀀스는 식별자로서 허용되며 contex와 구별될 수도 있습니다.t. 컨텍스트 의존형 렉서가 필요합니다.비키워드는 예비어(식별자로 금지)일 수도 있습니다.특히, 장래에 키워드가 될 가능성이 있는 경우에 대비하여 순방향 호환성을 위해서입니다.PL/1과 같은 일부 언어에서는 구분이 명확하지 않습니다.
의미론
식별자 프로그램 내의 범위 또는 접근성은 로컬 또는 글로벌 중 하나입니다.글로벌 식별자는 기능 외에서 선언되며 프로그램 전체에서 사용할 수 있습니다.로컬 식별자는 특정 기능 내에서 선언되며 해당 [1]기능 내에서만 사용할 수 있습니다.
컴파일러를 사용하는 프로그래밍 언어의 구현에서 식별자는 종종 컴파일 시간 엔티티일 뿐입니다.즉, 런타임에 컴파일된 프로그램은 텍스트 식별자 토큰(컴파일러가 각 식별자에 할당한 이러한 메모리 주소 또는 오프셋) 대신 메모리 주소와 오프셋에 대한 참조를 포함합니다.
(인터프리터 또는 증분 컴파일러를 사용하여) 소스 코드의 인터랙티브 평가와 같이 리플렉션을 지원하는 언어에서 식별자는 런타임 엔티티이기도 하며, 때로는 자유롭게 조작하고 평가할 수 있는 퍼스트 클래스 개체로도 사용됩니다.리스프에서는, 이것들을 기호라고 부릅니다.
컴파일러와 인터프리터는 일반적으로 사용되는 실제 문자 시퀀스에 따라 식별자에 의미적 의미를 부여하지 않습니다.하지만 예외도 있습니다.예를 들어 다음과 같습니다.
- Perl에서는 변수가 식에서 어떻게 해석되는지에 대한 측면을 지정하는 sigil이라는 프레픽스를 사용하여 변수를 나타냅니다.
- Ruby에서 변수는 식별자가 대문자로 시작하는 경우 자동으로 불변으로 간주됩니다.
- Fortran에서 변수 이름의 첫 번째 문자는 변수 이름이 기본적으로 정수 또는 부동 소수점 변수로 작성되는지 여부를 나타냅니다.
- 이동에서는 변수 이름의 첫 글자의 대문자에 따라 변수 이름의 가시성이 결정됩니다(공용 대문자, 비공개 소문자).
Go와 같은 일부 언어에서 식별자는 맞춤법과 가시성에 [2]따라 고유합니다.
HTML에서 식별자는 HTML 요소의 가능한 속성 중 하나입니다.문서 내에서 고유합니다.
레퍼런스
- ^ Malik, D. (2014). C++ programming : from problem analysis to program design (7th ed.). Cenage Learning. p. 397. ISBN 978-1-285-85274-4.
- ^ "The Go Programming Language Specification - The Go Programming Language". Golang.org. 2013-05-08. Retrieved 2013-06-05.
