2016-03-28 25 views
1

Oldukça karmaşık bir özyinelemeli mantığı olan bir prolog programım var. Programı daha iyi anlamak için kuralların bağımlılığını görselleştirmek isterim. Görselleştirme için bir prolog programını, bir GraphViz dosyasına dönüştürebilecek bazı yardımcı program var mı?Prolog kural bağımlılıklarını görüntüleme

Tüm tahminlerim bir XSB prolog dosyasında bulunur.

+2

SWI-Prolog'da, [callgraph] 'ı deneyebilirsiniz (http://www.swi-prolog.org/pack/list?p=callgraph) – CapelliC

cevap

2

Logtalk (12 Prolog sistemini destekler), çapraz referans diyagramları dahil olmak üzere çeşitli türde diyagramlar oluşturabilen bir diagrams aracı sağlar. Prolog sistemine bağlı olarak, Prolog sistemine bağlı olarak, bazı sınırlamalarla birlikte kullanılabilir. Örneğin:

http://logtalk.org/diagrams/swi_prolog_library_entity_diagram.svg

(aracı eski bir sürümünü kullanarak oluşturulan) bir çapraz referans şemasının bir örnek:

http://logtalk.org/diagrams/pengines_module_xref_diagram.pdf

Bu araç uygun bir seçenek olabilir (bu varsayılan Kullandığınız Prolog sistemine ve kodunuzu nasıl düzenlediğinize bağlı olarak sizin durumunuzda çıktı GraphViz .dot dosyalarıdır. Belki de gönderinizi daha fazla ayrıntıyla güncelleyebilirsiniz?

+0

İstediğim şeyi yapmalı gibi gözüküyor ama ben verdim deneyin ve arama grafiği eksik. Örneğin, 'bar/4' çağıran bir foo/4 'yüklemem var. Bu düğümlerin ikisi de grafikte, ancak bu belirli kenar eksik. Çağrı grafiğindeki döngüler desteklenmiyor mu? –

+0

@EdMcMan Döngülerin sorun olduğunu düşünmüyorum. Sorunu, eksik kenarla yeniden oluşturmanıza izin veren kodun bir kısmını paylaşmanız mümkün mü? Alternatif olarak, posta yoluyla özel olarak bana ulaşmaktan çekinmeyin (adres Logtalk web sitesinde bulunabilir). –

+0

@EdMcMan XSB, diğer sonuçların yanı sıra meta-yüklemlerin farklı bir şekilde ele alındığı anlamına gelen bir atom tabanlı modül sistemi kullanır. Kayıp kenar, "bar/4" yüklemesinin meta çağrıldığı bir durum için olabilir mi? –