2010-06-29 2 views

답변

4

camlp4 가지 방법입니다. 다음은 motivating example입니다. 문서는 드문 드문 사실이지만 위키, 기존 예제, tutorials 및 어쩌면 camlp4 소스를 통해 독서를 할 수 있습니다.

+0

그 동기 부여 예제는 무엇을합니까? – aneccodeal

+0

Insert는 이름과 위치 매개 변수를 전달하는 각 구문 분석 된 함수 정의의 시작 부분에 Camlp4prof.count ("임의"읽기) 함수를 호출합니다. – ygrek

+0

camlp4에 대해 자세히 알아 보려면 다음 리소스를 참조하십시오. http://groups.google.com/group/fa.caml/browse_thread/thread/1751a2c308742ac3?hl=ko – nlucaroni

2

[camlp4] [1] (이)가 원하는 것은 무엇입니까? 전에 camlp4를 사용하지 않았으므로 소프트웨어로서의 미덕을 증명할 수는 없습니다. Camlp5 [http://pauillac.inria.fr/~ddr/camlp5/]]을 사용하는 사람들에 대해 들어 봤는데, 위키 백과에 따르면 camlp4의 현재 버전보다 더 나은 문서가 있습니다.

+0

camlp4는 OCaml 구문을 수정하고 사용자 지정하는 데 사용되는 것으로 생각했지만 어쨌든 AST에 연결할 수 있다고 생각합니다. – aneccodeal

1

OCaml 4.02.1 이후 정확하게 이것을 수행하기 위해 PPX tools written bu Alain Frisch을 사용할 수 있습니다. 예 :

% ocamlfind ppx_tools/dumpast -e "1 + 2" 
1 + 2 
==> 
{pexp_desc = 
    Pexp_apply ({pexp_desc = Pexp_ident {txt = Lident "+"}}, 
    [("", {pexp_desc = Pexp_constant (Const_int 1)}); 
    ("", {pexp_desc = Pexp_constant (Const_int 2)})])} 
========= 

뿐만 아니라 일반 코드 파일의 AST를 덤프하기 위해이 프로그램을 사용하는 것이 가능하며, 다양한 옵션은 덤프의 정밀도의 정도를 제어합니다. 예를 들어 위의 예에서 AST의 위치 매개 변수는 숨겨져 있습니다.

0

compiler-libs을 사용하면이 작업을 수행 할 수 있습니다. Parsetree, AsttypesAst_helper을 참조하십시오.

관련 문제