2011-11-20 14 views
25

Örnek sorun: Bir belgede matematiksel sembollerin ilk ortaya çıkmasını vurgulayan bir Haskell komut dosyası yazmak istiyorum (ör. \fbox ile). İnşallah, bu herşeyi tanıttığımdan emin olmamı sağlayacaktır.Karışık (parça yapı, parça değiştirilmemiş metin) ayrıştırma ve yeniden yazma için herhangi bir Haskell tekniği var mı?

  • Regex Hadi onlar vb matematik modunda, içinde ne bilemezsiniz, ve şeyleri saymak mantığı yok, ya da sonraki \section bir değişken aslında yeni bir değişken olduğunu biliyoruz, çünkü uygun değildir .

  • Ayrıca tüm LaTeX için ayrıştırıcı yazmak istemiyorum. Hataların olasılığı yüksek gibi görünüyor ve ben sadece bir senaryo yazmak istiyorum, ticari bir program değil.

Karışık bir ayrıştırıcı yazdım - bir yapıya sahip olan ve geri kalanını metin olarak tutan bir soruna yanıt olarak. [How do you use parsec in a greedy fashion?]. Ama benim yaklaşımım zahmetliydi. Daha iyi, daha resmi bir yol var mı?

+1

Düzenli ifadeler için çok acele etme - regex'in neredeyse her zaman tam programlama dilinde (örneğin, bu durumda Haskell gibi) gömülü olması, seçim yapması vb. "ada ayrıştırma" dir, ama Haskell'in bunun için bir aracı yoktur ve eğer düzenli bir şekilde "ayrıştırma" yerine normal ifadeyle eşleştirmeye çalışırsanız hemen başlangıç ​​ve bitiş sembollerini tanıma ve ayrıştırma adalarını terk etme konusunda problemler vardır. –

cevap

2

Latex'in ayrıştırılması için Pandoc library on Hackage'a bir göz atmak isteyebilirsiniz. Lateks'in yanı sıra bir dizi başka formatı da ayrıştırmanıza, değiştirmenize ve oldukça yazdırmanıza izin verir.