저는 컴파일러 과정을 수강 중이며 소개를 되풀이하고 있습니다. 컴파일러 프로세스가 어떻게 작동하는지에 대한 일반적인 개요입니다.파서 나 렉서가 심볼 테이블을 생성합니까?
그러나 나는 조금 혼란스러워합니다.
내 과정에서 "어휘 분석기는 일반적으로 특정 소스 언어 개념에 대한 정보를 저장/가져 오기 위해 기호 테이블에 액세스합니다"라고 명시되어 있습니다. 그래서 이것은 렉서가 실제로 심볼 테이블을 만들 것이라고 믿게 만듭니다. 내가 보는 방식으로 그는 토큰을 만들고 min 테이블을 저장하고 그것이 어떤 유형의 심볼인지를 설명합니다. "x -> VARIABLE"과 같습니다.
Google 검색을 통해 읽을 때 파서가 생성 한 사실에 대한 막연한 정보 만 찾을 수 있습니다. 그러나 구문 분석 단계는 렉서 단계 이후에옵니다. 그래서 나는 약간 혼란 스럽다.
Symbol Table Population after parsing; Compiler building 는
http://www.cs.dartmouth.edu/~mckeeman/cs48/mxcom/doc/Symbols.html 가 말한다 (미국 파서는 테이블을 채우는) "심볼 테이블은 구문 트리를 도보로 내장되어 있습니다.". 구문 트리는 파서에 의해 생성됩니다. (파스 트리). 파서가이 기호 테이블을 사용하기 전에 실행되는 렉서는 어떻게 할 수 있습니까?
나는 렉서가 변수의 범위와 기호 탭 내에 포함 된 다른 정보를 알 수 없다는 것을 알고 있습니다. 따라서 파서가이 정보를 테이블에 추가한다는 것을 알고 있습니다. 그러나 렉서는 단어가 변수인지, 선언 키워드인지 등을 알고 있습니다. 따라서 부분 (?) 기호 테이블을 작성할 수 있어야합니다. 아마도 심볼 테이블의 일부를 구성 할 수 있을까요?