2013-02-15 5 views
1

안녕하세요, 나는 3 파일 nano.ml 유형, 그리고 페이저와 렉서 파일이 있습니다. 나는 파서에 대한 규칙을 작성하는 방법을 모르고 규칙을 작성하려고 시도하지만 그것은 논쟁을 받아들이지 않는다는 말로 나를 어둡게 만든다.
나는 그것이 나에게 이런 식으로 뭔가를 할 생각이ocaml 파서 및 렉서

:File "nanoParse.mly", line 31: $1 refers to terminal `LET', which has no argument 
Compiling (to byte code) OCAML module nanoLex.ml 
ocamlc -dtypes -c nanoLex.ml -o nanoLex.cmo 
File "nanoLex.mll", line 10, characters 32-37: 
Error: The constructor LET expects 1 argument(s), 
but is here applied to 0 argument(s) 

프로그램 제공 컴파일하려고 :

답변

1

내가 의심을 당신은 {Let($2, $3, $5)} 대신 {Let($1, $2, $3)}합니다. 그러나이 코드는 살펴볼 코드가 많습니다. 작은 예제로 시작하여 거기에서부터 작업하고 싶을 수도 있습니다.

+0

여전히 언급 : 오류 : 생성자 LET은 1 개의 인수 ( )를 기대하지만 0 인수에 적용됩니다 – user1968057

+0

파일 "nanoLex.mll", 줄 10, 문자 32-37 : 렉서, 그래서 인수를 받아들이도록 내가 바꿔야 만 하는게 있니? – user1968057

+0

나는 그것을 ($ 2, $ 3, $ 5)로 바꿨지 만, 나는 지금 렉서를 만들었 어? – user1968057