2015-06-15 10 views
7

Neden olursa olsun (utf-8) sedef ile menhir kullanmalıyım, ama oluşturulan ayrıştırıcı Lexing yerine Sedlexing yapmak için nasıl bilmiyorum bilmiyorum. Herhangi bir ipucu? IMenhir ile sediman kullanarak

menhir --infer parser.mly 

çalıştırın

oluşturulan program Lexing... ile hatları vardır. Manuel olarak değiştirebilirim, ama başka bir yolu olmalı, değil mi?

cevap

2

DÜZENLEME: oluşturulur parser.ml Lexing başvurular olmalıdır. Sedlexing Çözümleyici için göndermek lexbuf oluşturmak için kullanılır, ama bu lexbuf Lexing veya Sedlexing tarafından oluşturulmuşsa ayrıştırıcı sürece Lexing.lex_start_p ve üzerinde Lexing.lex_curr_p gibi işlevleri kullanabilirsiniz olarak, umursamıyor.


Ben test.ml Çözümleyicisine görüşmesi ile parser.mly kullandığı

ocamlbuild -use-menhir -tag thread -use-ocamlfind -quiet -pkg menhirLib \ 
    -pkg sedlex test.native 

gibi bir şey kullandı.


tamlığı için ocamlbuild tarafından çalıştırılır komut şöyledir:

menhir --ocamlc 'ocamlfind ocamlc -thread -package sedlex -package menhirLib' \ 
    --explain --infer parser.mly 

https://github.com/unhammer/ocaml_cg_streamparse (şube https://github.com/unhammer/ocaml_cg_streamparse/tree/match-singlechar-example tam bir örneğe bakın a veya ß değil gibi tek kod noktasını eşleşen bir kural gösterir aa).

+0

Teşekkürler! Bunu deneyecek ve sonra cevap olarak işaretleyecektir. –

+0

Son komutunu çalıştırmayı denedim (ocamlbuild kullanmıyorum), fakat sonuçta 'parser.ml' hala 'Lexing' e bağlı ... –

+0

Cevabı güncelledim - bunu açıklıyor mu? – unhammer

İlgili konular