2013-08-17 4 views
4

OCaml .ml 파일과 Menhir .mly 파일이있는 프로젝트가 있습니다. ocamlbuild를 사용하여 프로젝트를 컴파일합니다..mly 파일에서 ocamlbuild와 함께 배터리 사용

내 _tags 파일이 한 줄이 포함되어

true: use_menhir, package(batteries) 

모든 내가 .mly 파일에 배터리를 사용할 경우를 제외하고 잘 작동합니다. 내 .mly 파일에서 open Batteries ;;%{%} 사이 인 경우 ocamlbuild를 호출 할 때 "오류 : 언 바운드 모듈 배터리"가 나타납니다.

ocamlbuild이 같은 선돌 호출 될 때 것으로 보인다 :

/usr/bin/menhir --ocamlc '/usr/bin/ocamlfind ocamlc' --infer parser.mly 

이 선돌의 --ocamlc 옵션에 -package batteries (동등하거나 뭔가를) 추가 잊어.

어떻게 해결할 수 있습니까? 내 _tags 파일의 .mly 파일에 대한 특별한 규칙이 도움이 될 수 있습니까? 또는 ocamlbuild 버그입니까?

답변

5

이것은 최근의 OCaml 버전 (http://caml.inria.fr/mantis/view.php?id=5763 참조)에서 수정 된 것으로 추정됩니다. 어떤 버전을 실행하고 있습니까?

+0

OCaml 4.00.1, Batteries 2.1 및 ocamlbuild 4.00.1을 사용하고 있습니다. 가장 최근에 출시 된 버전입니다. SVN 버전으로 작업하고 싶지 않기 때문에 지금 당장 버그가 붙어있는 것 같습니다. 상황을 해결해 주셔서 감사합니다. – p4bl0

+0

예. svn 버전 : 'menhir --explain --infer -la 1 --table --ocamlc 'ocamlfind ocamlc -I + ocamlbuild -g -annot -bin-annot -strict-sequence -bin-annot -package yojson -package menhirLib -package ulex -package pprint -package fix -I 구문 분석 -I utils -I 입력 -I interpreter -I lib -I 컴파일러 -I mezzolib -I 테스트/단위 '-infer parsing/grammar.mly ' with 4.00.1 : '+ menhir --explain --infer -la 1 --table --ocamlc '/home/jonathan/.opam/4.00.1/bin/ocamlfind ocamlc -I 파싱 -I 유틸리티 -I 타이핑 - 나는 인터프리터 -I lib -I compiler -I mezzolib -I tests/unit '- 구문 분석/문법. –

5

다음 OCaml 릴리스 전에 조나단 (Jonathan)이 제공 한 링크에 설명 된 좋은 해결 방법이 있습니다. 당신의 .mly 파일이 foo.mly라는 경우에는 다음과 같은 내용으로 foo.mlypack 파일을 정의 할 수 있습니다 : foo.ml는 다음 .mlypack 파일을 사용하는 생산

Foo 

을 제대로 통과 할, (원래 선돌의 모듈 식 문법 조합 기능을 지원하는 의미) --infer 매개 변수의 컴파일 옵션 - 오래 전에 .mlypack 컴파일이 수정 되었기 때문에.

+0

하하. 지옥처럼 더러운. 나는 그것을 좋아한다. 고마워요 가브리엘. – p4bl0