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