이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2009년10월9일 11:48 주제: 숙제3 4번 부호 우선순위 |
|
|
(Dot)가 가장 나중에 연산을 수행하나요?
예를 들어 c1.c2.c3|c4.c5
에 대해서 c1.d2.(c3|c4).c5로 봐야 하나요?
또 c1.c2.c3!.c4의 경우도
c1.c2.(c3!).c4로 봐야 하는건가요? |
|
위로 |
|
|
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년10월9일 13:47 주제: Re: 숙제3 4번 부호 우선순위 |
|
|
강동옥 씀: |
예를 들어 c1.c2.c3|c4.c5
에 대해서 c1.d2.(c3|c4).c5로 봐야 하나요?
또 c1.c2.c3!.c4의 경우도
c1.c2.(c3!).c4로 봐야 하는건가요? |
우리는 code를 tree 구조로 저장하기 때문에 연산 우선순위가 존재하지 않습니다. 연산 우선순위는 기본적으로 syntax에서 발생하는 개념이기 때문이죠. (토큰과 토큰간의 결합을 어떤 순서로 해야하는지 입니다)
c1.c2.(c3|c4).c5 는
(dot (dot (dot c1 c2) (bar c3 c4)) c5) 로 표현할 수도 있고
(dot (dot c1 c2) (dot (bar c3 c4) c5)) 로 표현도 됩니다.
둘다 같은 코드를 나타내고 같은 string에 대해 같은 match 결과를 내야합니다.
c1.c2.(c3!).c4 는
(dot (dot (dot c1 c2) (bang c3)) c4) 도 되고
(dot (dot c1 (dot c2 (bang c3))) c4) 도 되고..
lexical analyzer, parser를 작성하실 생각이 아니라면
우선순위에 대해서는 생각 안하셔도 됩니다. |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2009년10월9일 14:19 주제: |
|
|
(Dot)간의 연산 우선순위를 물은것이 아니라 Dot로 묶여진 (c1.c2)따위도 하나의 c인데 그럼 c1.c2|c3의 경우에 (c1.c2)|c3로 처리할수도 있지 않나 하는걸 물어본겁니다^^
근데 이건 아무래도 아니겠네요 |
|
위로 |
|
|
윤용호
가입: 2008년 9월 23일 올린 글: 257
|
올려짐: 2009년10월9일 15:24 주제: re |
|
|
그에 대한 답도 같습니다.
애초에 주어진 코드로 "c1.c2|c3" 라는 표현을 할 수가 없습니다.
반드시 (bar (dot c1 c2) c3) 혹은 (dot c1 (bar c2 c3)) 중 하나로만 표현이 가능합니다.
만약 (list c1 'dot c2 'bar c3)와 같이 코드 입력을 주게 되어있다면 우선순위가 문제가 되겠지요. |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2009년10월9일 15:42 주제: |
|
|
숙제예시에 (match 11 11+) 와 같은 표현이 있어서 헷갈렸습니다.
그렇군요^^ |
|
위로 |
|
|
|