인터프리터 어휘 분석 프로그램 - C# 예제
요즘 이런 ^^ 책을 읽고 있습니다.
만들면서 배우는 인터프리터: 컴파일러 이론으로 만드는 나만의 스크립트 언어
; http://www.yes24.com/24/goods/7858784?scode=032
책도 얇고 전반적인 개념과 함께 코드를 부분적으로 곁들여 설명하고 있기 때문에 한번쯤 편안하게 읽어보시는 것도 좋을 것 같습니다.
당연히 코드를 입력해가면서 실습도 병행하고 있는데요. C++로 하지 않고 C#으로 실습을 하고 있기 때문에 변환해 둔 것을 공유하는 것이 좋겠다 싶어 제 블로그에 올려둘 예정입니다.
전체적으로 보니까, 동작하는 소스코드가 중간에 3개 정도 있고 마지막에 전체 소스 코드를 실어놓은 형식이라서 아마 앞으로도 3번 정도는 올리게 될 것 같습니다. 혹시나 C#으로 간단한 인터프리터 공부하실 분들이라면 위의 책을 구매하시고 제 소스 코드를 함께 보시면 도움이 되실 듯 합니다.
오늘은 그 첫번째로 "3.6.5 어휘 분석 프로그램"의 67페이지에 포함된 token_p.cpp 파일을 C# 버전으로 작성한 것을 공유합니다. ^^
실행하면 다음의 입력을,
if dt<=100
dt = (a+200) * b
else
dt=300
end
print "dt=", dt
파싱해서 다음과 같은 출력 결과를 얻습니다.
if 16 = If 0
dt 20 = Ident 0
<= 13 = LessEq 0
21 = IntNum 100
dt 20 = Ident 0
= 7 = Assign 0
( 1 = Lparen 0
a 20 = Ident 0
+ 3 = Plus 0
21 = IntNum 200
) 2 = Rparen 0
* 5 = Multi 0
b 20 = Ident 0
else 17 = Else 0
dt 20 = Ident 0
= 7 = Assign 0
21 = IntNum 300
end 18 = End 0
print 19 = Print 0
dt= 22 = String 0
, 8 = Comma 0
dt 20 = Ident 0
25 = EofToken 0
(
첨부한 파일은 소스 코드입니다.)
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]