ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터프리터...34
    일지 2021. 1. 28. 09:09

    심볼 테이블에 등록

    변수를 선언하거나 함수를 정의할 때 해당하는 이름을 구할 수 있고 문맥을 통해 변수 명인지 함수 명인지 파악할 수 있다. 단, 인터프리터의 경우에는 초기값 대입 시 형을 결정하므로 이름과 종류, 배열인 경우 배열의 길이를 저장한다.

     

    BBI 인터프리터에서는 다음의 방식으로 등록 처리를 한다.

    int Enter(SymbolTable& stbl, SymbolKind kind)
    {
    	변수명 외에 $를 사용하지 않은 것을 확인
    	종류별 정보를 설정
    	이름이 중복되지 않은 것을 확인
    	if (함수인 경우)
    	{
    		정의 행을 주소로 저장
    	}
    	if (변수 또는 인수인 경우)
    	{
    		메모리 할당 후 주소 저장
    	}
    	글로벌 이름인지 로컬 이름인지 판정하고 해당하는 심볼 테이블에 등록
    		return 심볼 테이블 위치;
    }

     

    댓글

Designed by Tistory.