yacc, lex에서 심볼테이블을 어떻게 구현하죠?

불량도ㅐㅈㅣ의 이미지

계산기 만드는 프로그램을 짜고 있습니다.

문제는 변수까지 다루어야 한다는 것입니다.

그러면 심볼 테이블이 필요하다는 애기인데...

어떻게 구현해야 하는지 감이 안 옵니다.

뜬구름 잡는 애기인것고 같고...ㅎ

Symbol Table 어떻게 구현하나요?

File attachments: 
첨부파일 크기
Package icon WinCalc.zip57.4 KB
Package icon WinCalc.zip57.4 KB
monpetit의 이미지

변수명과 값을 가진 구조체 배열 또는 linked list 등을 사용하시거나, C++을 사용하신다면 그냥 map으로 구현하셔도 될 것 같네요.
joinc의 flex/bison 예제를 보시면 초간단 버전으로 변수명이 알파벳 한글자만으로 구성된 심볼테이블이 나옵니다. 참고하세요.
http://www.joinc.co.kr/modules.php?name=News&file=article&sid=190

jinyeong의 이미지

간단한 컴파일러 책 하나 참조해보시는것도 좋을 것 같습니다.

일단 symbol의 type을 정하시고(variable, const, struct 등등)

hash 정도로 구현하시면 됩니다. 대신 scope 이 있는 language 경우라면,

scope stack을 따로 처리 해 주시면 됩니다.

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

익명 사용자의 이미지

www.relisoft.com 에서 구한거죠.

압축을 풀면, SymbolTable 클래스가 있어요.

도움이 되시길.

댓글 첨부 파일: 
첨부파일 크기
Package icon 0바이트
Package icon 0바이트