변수 이름은 영문(대문자, 소문자), 숫자(0~9) 및 특수문자(밑줄 _)로 구성될 수 있습니다.
(일부 컴파일러는 한글을 지원합니다.)
그러나 어떤 변수의 이름도 숫자로 시작할 수 없다고 배웠습니다.
왜일까요?
그 이유를 알아보도록 하겠습니다.
컴파일러에는 다음과 같은 7가지 단계가 존재합니다.
-
Lexical Analysis (어휘 분석)
-
Syntax Analysis (구문 분석)
-
Semantic Analysis (시맨틱 분석)
-
Intermediate Code Generation (중간 코드 생성)
-
Code Optimization (코드 최적화)
-
Code Generation (코드 생성)
-
Symbol Table (심볼 테이블)
각 단계의 자세한 설명은 추후에 하도록 하겠습니다.
컴파일러는 코드 조각을 컴파일하면서 1. 어휘분석 단계에서 역 추적을 피할 수 있습니다.
예를들어 Yeolco라는 변수를 컴파일 1. 어휘분석 단계에서 문자 ‘Y’를 만날때 컴파일러는 즉시 식별자를 알 수 있습니다.
그러나, 142Yeolco12 같은 변수를 컴파일러는 숫자 또는 식별자가 ‘Y’에 도달할때 까지 결정할 수 없으며
- 어휘분석 단계에서 변수임을 식별하기위해 역 추적이 필요합니다.
그러나 이는 컴파일러에서 지원되지 않습니다.
만약 int 12=13; 라고한다면
int 3=12에서 3은 뭐가 될까 라는 해석도 있는데 그러면 뒤에 알파벳을 붙히면 해결되는 문제아닌가 https://stackoverflow.com/questions/342152/why-cant-variable-names-start-with-numbers를 잘읽어보자 다시 출처: https://yeolco.tistory.com/144 [열코의 프로그래밍 일기]