편집 요약 없음 |
편집 요약 없음 |
||
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이다.