질문

2010-01-26 4 views
0

나는 다음과 같은하고 다른 방식 초보자 "프로그래밍 언어 : 응용 프로그램 및 해석"질문

http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/plai-2007-04-26.pdf (21 페이지)

가 지금은 모든 테스트 케이스로, 21 페이지 일하고 있습니다. "with"가있는 모든 테스트 케이스가 실패하는 동안 첫 번째 테스트 만 통과 할 수있었습니다. 파서에 "with"에 대처할 구문이 없다는 것을 깨달았습니다.

(define (parse sexp) 
    (cond 
    [(number? sexp)(num sexp)] 
    [(list? sexp) 
    (case (first sexp) 
     [(+) (add (parse (second sexp)) 
       (parse (third sexp)))] 
     [(-) (sub (parse (second sexp)) 
       (parse (third sexp)))])])) 

그래서 당신이 도와주세요 수

이 때문에 내 위의 테스트가 실패의 원인이 구문 분석 기능 :

이 순간에 내 파서는? 감사합니다. . 우리는 우리가 수행 한 생각했을 때 사실

답변

3

파서 그렇게 with의 실제 구현을 처리하려고까지 완전한 하나에서 아직 시도해야 것이 아닙니다이다. 어떤 수업의 맥락에서 이것을 배우고 있다면, 분명히 교직원과상의 할 필요가 있습니다. 이 작업을 직접 수행하려는 경우 작업을 천천히 수행하고 나머지 코드를 사용하기 전에 파서가 제대로 작동하는지 확인해야합니다. 그와 같은 파서에 대한 예제를 포함 내 class notes입니다 당신을 도울 수

한 자원. (필자는 현재이 자료에서 정확한 지점을 다루고 있습니다.)하지만 PLAI 코드를 사용하는 경우 PLAI 코드와 다른 측면에서 구분됩니다. 언어는 형식화 된 언어이며, 평범하지 않은 계획; 우리가 쓰는 파서는 match을 사용하며 프로그램의 전체 조직은 약간 다릅니다. 그래도이 방법을 사용하는 경우 진행 방법을 대략 이해해야합니다.

1

, 당신은 더 읽어 경우,

그냥, 우리는 발견 그 위의 테스트 케이스 (당신이 어떤 것들을 알 수 있습니까?) 자유 식별자 오류를 생성 여러

(가) "와"표현이 실패하는 이유

그는 설명한다.

+0

아니, 로버트가 가지고있는 문제가 아니에요 - 대체 기능의 구현에 문제에 대한 부분 회담,하지만 위의 파서의 첫 번째 장소에서 같은 표현을 생산하고 어떤 경우는 없다. –

+0

죄송합니다. 나는 그가 사용했던 참조를 보려고하기 전에 코드를 더 명확하게 읽어야했다. – Don