-
인터프리터...34일지 2021. 1. 28. 09:09
심볼 테이블에 등록
변수를 선언하거나 함수를 정의할 때 해당하는 이름을 구할 수 있고 문맥을 통해 변수 명인지 함수 명인지 파악할 수 있다. 단, 인터프리터의 경우에는 초기값 대입 시 형을 결정하므로 이름과 종류, 배열인 경우 배열의 길이를 저장한다.
BBI 인터프리터에서는 다음의 방식으로 등록 처리를 한다.
int Enter(SymbolTable& stbl, SymbolKind kind) { 변수명 외에 $를 사용하지 않은 것을 확인 종류별 정보를 설정 이름이 중복되지 않은 것을 확인 if (함수인 경우) { 정의 행을 주소로 저장 } if (변수 또는 인수인 경우) { 메모리 할당 후 주소 저장 } 글로벌 이름인지 로컬 이름인지 판정하고 해당하는 심볼 테이블에 등록 return 심볼 테이블 위치; }
참고문헌참고문헌