게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

[숙제 7] let rec id의 우변이 임의의 식인 경우

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2026)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
노윤철



가입: 2026년 3월 4일
올린 글: 3

올리기올려짐: 2026년5월17일 10:06    주제: [숙제 7] let rec id의 우변이 임의의 식인 경우 인용과 함께 답변

안녕하세요?
숙제 7 중 M 언어의 파싱과 관련하여 질문 드리려고 합니다.

코드:

let val fib = fn x =>         
  if x = 0 then
    0
  else if x = 1 then
    1
  else (fib2 (x-1) + fib2 (x-2))
in
let rec fib2 = fib in
  write fib2 (9)
end
end


위 M 프로그램에서는 let rec의 우변에 fn id => e 가 아닌 expression이 들어오고 있습니다.
(let rec fib2 = fib)

코드:

e ::= ... | let bind in e end | ...
bind ::= val id = e | rec id = fn id => e


물론 fib의 값이 어떤 함수로 계산되는 것은 맞지만, M의 syntax에 따르면 위 프로그램은 올바른 M 프로그램이 아닌 것으로 보입니다. syntax는 rec id = fn id => e의 꼴이 되어야 한다고 명시하고 있는데, 이를 따르지 않기 때문입니다.
그런데 이 프로그램을 실행해보니 파싱도 정상적으로 되고, 제가 현재 구현한 M 실행기도 문제 없이 어떤 값을 출력합니다.
이렇게 M의 syntax를 위반하지만 파싱이 정상적으로 되는 경우는 입력으로 주어지지 않는다고 가정해도 되는지, 아니면 M 실행기가 문제를 찾아낼 수 있도록 해야 하는지 궁금합니다.

감사합니다.
노윤철 올림
위로
사용자 정보 보기 비밀 메시지 보내기
안중원
Site Admin


가입: 2023년 3월 13일
올린 글: 76

올리기올려짐: 2026년5월17일 14:49    주제: 인용과 함께 답변

안녕하세요, 프로그래밍 언어 조교 안중원입니다.

말씀하신 부분은 스켈레톤 코드의 오류입니다.
m.pdf에 따라 스켈레톤을 수정하는 과정에서 혼동이 있었던 것 같습니다.
현재 스켈레톤 코드의 m.ml 및 parser.mly 파일을 수정하여 업로드한 상태이니 확인해보시기 바랍니다.

감사합니다.
_________________
TA 안중원
e-mail: jwahn@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2026) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay