Cmake ve visual studio 10 ile pencereler için başarılı bir clang derledim. Bir XML dosyasını kaynak kodunun AST temsili olarak almak istiyorum.Derleyici kullanmadan clang ile bir C/C++ kodu XML AST dökümü alabilir miyim?
clang -cc1 -ast-print-xml source.c
Ancak bu derleme aşamasını (ı önlemek için istediğiniz) başlatıyordur: linux altında gcc (ubuntu) ile clang sonuç sağlayan ancak pencereler kutuyu çalışmaz bir seçenek daha var . Kaynak kodun içine kazmak, clang için oldukça yeni olduğum sürece bana yardımcı olmadı. Ben kullanarak AST ikili sürümünü oluşturacak şekilde yönetmek olabilir:
clang -emit-ast source.c
Maalesef bu biçim ayrıştırma için doğrudan kullanılamaz. Clang içinde bir ikili dosya yerine XML ağacını doğrudan oluşturmak için varolan bir yöntem var mı?
Amaç, XML ortamında .NET temsilcisindeki diğer araçlarda kullanmaktır; bu nedenle ikili AST'ye erişmek için yerel clang lib'in etrafına sarmak zorunda kalmam gerekir. Belki birisi zaten .NET için bir ikili argo AST ayrıştırıcısı yazdıysanız üçüncü bir seçenek var mı?
Clang ön sonu tarafından oluşturulan AST, derleme aşamasında oluşturulan ile eşdeğer değilse, bir şey eksik olabilir miyim.
Şirketim, C++ ön uçları oluşturur ve biz * AST'lerin eksiksiz XML dökümlerini gönderebiliriz. Bunu bir onay kutusu öğesi olarak kullanıyoruz, çünkü insanlar bunu soruyor. Kimse bunu gerçekten kullanmaz, çünkü gerçek C++ programının (tüm başlık dosyalarını içerir) çıktı miktarı basitçe * büyüktür *, bu da bunu yavaş ve beceriksiz kılar. Asıl soru şu, bunu neden yapmak istiyorsun?Clang muhtemelen C++ AST'yi doğrudan işlemek için çok sayıda makine sunmaktadır (ilgili aracımızın yaptığı gibi); Neden tüm bu çalışmayı çoğaltmak istersiniz? Neden sadece amacın için Clang kullanmıyorsun? –
http://stackoverflow.com/a/17393852/120163 adresinde bir C++ ağaç dökümine bakın. Bu XML değildir, ancak araç aynı içeriğe sahip XML de üretebilir. –