편집 요약 없음
편집 요약 없음
 
5번째 줄: 5번째 줄:


== [[Syntax]] ==
== [[Syntax]] ==
Identifier을 [[Syntax]]을 통하여 나타내면 다음과 같이 정의될 '''수도''' 있다.  
Identifier을 [[Syntax]]을 통하여 나타내면 다음과 같이 정의될 '''수도''' 있다.
<syntaxhighlight lang="BNF">  
<syntaxhighlight lang="BNF">
expr ::= ... // Rules for expression
expr ::= ... // Rules for expression
       | "{" "val" id "=" expr ";" expr "}"
       | "{" "val" id "=" expr ";" expr "}"

2023년 2월 25일 (토) 08:04 기준 최신판


개요

Identifier(식별자)는 프로그래임 언어의 특정 부분을 가르키는 이름(name)이다. 이러한 identifier가 가르키는 대상은 변수, 데이터 타입, 라벨, 서브 루틴,모듈과 같이 다양한 부분이 될 수 있다. 식별자는 값이나 다른 코드 부분을 참조하거나 닫을 수 있는 기호를 정의한다. 각 프로그래밍 언어는 식별자로 어떠한 값이 사용될 수 있는지를 정의한다. 예를 들어서 c에서는 A2와 같은 변수명 선언은 가능하지만 2A와 같은 숫자가 먼저오는 변수명, 즉 식별자, 는 선언할 수 없다.

Syntax

Identifier을 Syntax을 통하여 나타내면 다음과 같이 정의될 수도 있다.

expr ::= ... // Rules for expression
      | "{" "val" id "=" expr ";" expr "}"
      | id
id   ::= String

이 신택스는 { val x = "expression"; }라는 코드 구문을 판단해 낸다.

Semantics

  • Identifier는 Expression에 이름을 부여하여, Expression에 이름을 가지고 접근할 수 있게 해준다.
  • Scope은 identifier가 local인지 아니면 global인지를 구분한다. global은 function외부에 위치함으로서, 어느 함수나 호출 할 수 있으며, local은 함수 내부에 존재함으로서, 그 함수만이 호출 할 수 있다.
  • Identifier은 프로그래밍 언어에 따라서 이름을 만들어 내는 방식은 바뀔 수 있다. 또한 컴파일러가 들어가는 언어는 특정 메모리의 주소를 특정 identifier와 매핑하는 방식을 취한다. 그러나 반드시 Identifier가 static time에 정해지는 것은 아니다.
  • binding occurrence란 변수를 선언하는 것을 말한다. 예를 들어서, def f(x:Int, y: Int) = x + y + z에서 def안의 x와 y는 함수 파라미터의 선언으로 binding occurrence이다.
  • bound occurrence란 function parameter나 local identifier을 사용하는 것을 말한다. free identifier란 function parameter나 local identifier가 아닌 것을 의미한다 (즉, 정의되지 않은 변수를 말한다). 예를 들어서, def f(x:Int, y: Int) = x + y + z에서 우항 x와 y는 bound identifier z는 free identifier이다.