문법 규칙 (Lexical Rule)
- 예약어(if, while 등..)은 식별자로 사용할 수 없다.
- 좌변값 : 해당 메모리 주소를 나타내기 위해 변수를 사용하는 경우 ( x = ... )
- 우변값 : 저장된 값을 나타내기 위하여 변수 이름을 사용 ( ... = x ... )
- 명시적으로 메모리에 저장된 값을 나타내게 하기도 함. ( x := !y + 1에서 !와 같은 것)
유효범위 지정 (Defining Scope)
- 이름을 통해 연결된 대상에 접근할 수 있는 범위
- 정의 유효범위에 포함된 유효범위에서 참조가 일어나면 비-지역적 (Non-local)
- 비지역적이 아닌 모든 참조는 지역적이다.
- 가시성 : 지역변수와 전역변수의 이름이 같아서 지역변수가 전역변수의 사용을 막는가 안막는가.
-> HIDE(가려짐), VISIBLE(가시적임)
기호표 (Symbol Table)
- 번역기에 의해 유지되는 자료구조, 모든 선언된 이름과 연결정보를 관리
- 동적 유효범위 : 실행시간에 유효범위를 지정함.
-> 유효범위를 Stack에 push/pop 하는 방식으로 관리함.
- 정적 유효범위 : 컴파일 시간에 유효범위를 미리 지정함.
중복 (Overloading)
- 동일한 이름의 함수나 연산자를 구분하기 위해 인수들의 개수나 타입을 사용한다.
ex} System.out.print(int a), System.out.print(char a), System.out.print(String a) ... 와 같은 것
수명 (Lifetime)
- 변수가 메모리 공간을 할당받고 있는 시간
- 함수 종료시 삭제, 프로그램 종료 시 삭제 등..