parsing 은 인간의 어순을 컴퓨터가 처리하기 좋은 순서로 변환하는 작업입니다.
우리는 1+2 같은 식으로 표현하는 것을 좋아하지만, 컴퓨터는 add(1,2) 같은 식으로 표현하는 것에 맞춰져 있지요
즉 1, +, 2 를 +, 1, 2 의 순서로 바꾸는 작업을 parsing 이라고 생각하시면 되겠습니다.
물론 위의 예는 가장 간단한 예이고, 수식의 경우만 보아도 곱셈이 나오거나 괄호 같은게 나오게 되면 좀 더 복잡한 형태로 바뀌게 될텐데,
그 '복잡한 형태'를 일반화하기 가장 적합한 자료구조가 바로 tree 구조입니다.
2009.09.10 14:28:23 (*.31.193.254)
시작군
자료구조 책 보시면 parse tree에서 자세히 나옵니다. 근데 컴파일러보단 자료구조를 먼저배울텐데..........
2009.09.10 15:17:08 (*.98.37.169)
정상택
2학년에 밀려서 자료구조를 못 넣었습니다. 흐미.. 3학년은 4학년처럼 강제입력을 못하기 때문에 역차별이 일어나죠;
2009.09.10 15:21:11 (*.189.163.250)
우성
컴파일러를 배우시려면 parse tree가 문제가 아니라 CPU 구조, 메모리 구조 등 computer architecture와 OS, PL, automata 등을 모두 아셔야 가능 합니다.
High level 언어를 CPU에 적용 가능한 instruction으로 바꾸어 주는 부분이라 HW구조와 SW를 모두 커버하지 못하면 낭패를 보는 과목이라고 생각되네요.
저도 수업 들으면서 가장 어려웠지만 오히려 열심히 했더니 그 동안 제가 잘 못 알고 있던 부분들에 대한 tuning이 되어서 매우 유익했던 과목으로 기억하고 있습니다.
그 중에서 parse tree 는 - 물론 어렵습니다만 - 가장 기본임과 동시에, 잘 이해해야 하는 부분이라고 생각 합니다.
특히 초기 개념은 자료 구조나 프로그래밍 언어 과목을 들으셨다면 최소한 감이라도 잡고 계셔야 하는 부분이라고 생각 되는데요...
그래서 솔직히 compiler 들으신다고 하면서 parse에 대한 개념이 아무리 노력해도 안 잡히신다면 선수과목 부족이라고 밖에 안 보여 지네요 --;;
지금이라도 늦지 않았으니 수강 신청 취소 하시고 선수 과목 중 빠진 것 체크 하셔서 들으시기를 추천 합니다.
※ 2009-09-10 15:22:20 에 "우성(kaseton)" 에 의해 수정됨
※ 2009-09-10 15:22:43 에 "우성(kaseton)" 에 의해 수정됨
2009.09.10 20:02:06 (*.98.37.169)
정상택
음 제가 엄청난 과목을 들었군요.
일단 제가 들은 선수 과목으로는, 컴퓨터 구조, 화일처리론, 이산수학, 논리회로, 전자회로, 리눅스, DB론, c++ 기초, 운영체제 정도인데요.
autamata는 처음 들어보는 과목이군요. PL은 이번 학기에 compiler랑 같이 듣는 과목이고요...
자료구조는 지금 열나게 독학중입니다. ㅠㅠ, Shell programming하고 같이 열심히 하는 중이에요 ㅠㅠ
우성님 덕분에 공부에 대한 가닥이 잡힌 것 갔습니다.
intel CPU에 대한 건, 리눅스 시간에 하도 열나게 공부해서 괜찮을 것 같은데..
춈스키의 언어 분류라던가, 이중 리스트 구조에 대해서는 조금 걱정되긴 하네요 .
그 외에 제가 쌓아야 할 배경지식이 또 있을까요?
2009.09.11 13:47:41 (*.189.163.250)
우성
뭐... 다른 것은 어렵더라도 DS 는 꼭 들으세요. 축구의 트래핑, 농구의 드리블, 야구의 던지기 등 최고 기본기 중 하나 입니다.
우리는 1+2 같은 식으로 표현하는 것을 좋아하지만, 컴퓨터는 add(1,2) 같은 식으로 표현하는 것에 맞춰져 있지요
즉 1, +, 2 를 +, 1, 2 의 순서로 바꾸는 작업을 parsing 이라고 생각하시면 되겠습니다.
물론 위의 예는 가장 간단한 예이고, 수식의 경우만 보아도 곱셈이 나오거나 괄호 같은게 나오게 되면 좀 더 복잡한 형태로 바뀌게 될텐데,
그 '복잡한 형태'를 일반화하기 가장 적합한 자료구조가 바로 tree 구조입니다.