컴파일러 개발 (2) 썸네일형 리스트형 컴파일러 공부하고 개발하기 #03 - 파서 제너레이터, 스캐너 제너레이터, 컴파일러 컴파일러 서론 공부를 계속 이어가려했는데, 이사하면서 인터넷 신청을 늦게해서 시간이 꽤 걸렸다. 오늘은 파서 제너레이터에 대해 다뤄볼 것이다. 파서 제너레이터 파서(parser)를 만들기 위해서는 동일한 코드가 반복이 되고, 이는 상당히 번거롭고 귀찮은 일이다. 이를 위해 파서를 생성하는 프로그램이 파서 제너레이터이다. 파서 제너레이터와 스캐너 제너레이터, 컴파일러 컴파일러는 모두 동일한 말이고 동일한 프로그램이다. 파서 제너레이터에도 종류가 있다. LR 파서 제너레이터 LALR 파서 제너레이터 LL 파서 제너레이터 파서 제너레이터는 다룰 수 있는 문법의 범위에 따라 나누게 된다. LR 파서 제너레이터 문법의 취급 범위: 넓다 속도: 평균적 LALR 파서 제너레이터 문법의 취급 범위: 비교적 넓다 속도: 평균적 .. 컴파일러 공부하고 개발하기 #02 - 소스 코드 해석, 어휘 해석, 구문 해석, 의미 해석, 의미값 서론 오늘은 소스 코드 해석에 대해 다룰 것이다. 책 기준으로는 이전에 책에서 제공하는 소스코드의 간단한 일부 리뷰가 있는데, 그냥 #00과 #01 편에서 말한 순서를 코드로 나타낸 것이기에 패스하도록 하겠다. 그리고 책에서도 전처리 단계가 꽤나 복잡한 관계로 빠져버렸다. 소스 코드 해석에서 고려해야 할 점 우리가 코드가 있을 때 그냥 위에서부터 줄줄이 해석한다면 편하겠지만 우린 '연산자의 우선순위'를 고려해야 한다. 5 + 4 + 2는 컴퓨터 입장에서 (5 + 4) + 2로 받아들이게 되지만, 4 + 2 * 8은 4 + (2 * 8)로 해석해야하기에 이것이 연산자의 우선순위이다. 또한 함수명이 일반적으로 선언되어있는 것과 문자열 안에 함수명이 있을 때의 취급 또한 다르기에 이러한 점들을 고려해야한다. .. 이전 1 다음