쉘 만들때 함수벡터테이블(?)을 어떻게 구현할까요?

jephir의 이미지

일종의 미니쉘을 만들고 있는데
커맨드를 받아서 커맨드와 인자를 분리하고
커맨드를 일종의 테이블과 비교해서 함수를 찾아가서 인자를 건네주고 실행시키려고 하는데
요 테이블을 어떻게 구현해야 확장성있고 괜찮게 만들수 있을까요?
단순히 switch로 하면 음.. 나중에 점점 더 힘들어지고 그럴거같은데요..

swirlpotato의 이미지

만드는데 투자할 수 있는 시간이 좀 있다면 파서와 스캐너를 작성하여 하시면 될 것 같습니다.
lex 종류와 yacc종류에서 뱉어내는 소스를 활용하셔도 되구요

obbaya의 이미지

C로 만드시는 거면 커맨드이름, 함수포인터, 인자정보 등을 구조체 배열로 만들어서 많이들 쓰는 것 같고요.

C++이면 다양한 방법이 있을텐데 우선 떠오르는 건 strategy pattern이 생각나네요.

bushi의 이미지

jephir의 이미지

답변 주신분들 감사합니다 ^^; VC++에서 stl가지고 만드는 중이라 gcc쪽으로는 ㅎㅎ;;
일단 함수포인터하고 스트링으로 맵만들어서 하는걸로 만들고 있습니다~

lex하고 yacc는 음... 나중에 기회가 되면 -0-;;