2011-12-15 17 views
5

ANTLR aracı (C# hedefleme) tarafından oluşturulan Lexer ve Parser sınıflarını kullanıyorum. Bazı kodları ayrıştırdığımı ve bunun için bir AST ağacı aldığımı varsayalım. İlk kodumun bir kısmı değiştiyse ve ağacın sadece ilgili kısımlarını güncellemek isterse ne olur? Bunu yapmanın ortak bir yolu var mı? Örneğin, bazı işlevler gövdesine bir kod satırı eklenmiştir. Ve bu işlevi temsil eden ağacın sadece bir parçasını yeniden oluşturmak ve sonraki işlevlerin belirteçleri güncellemelerini yeniden oluşturmak istiyorumANTLR AST ağacı güncelleştirmesi

+0

Ağacı değiştirdikten sonra, ne yapmak istersiniz? Sanırım kaynak metinleri yeniden oluşturuyorum. Yorumlar ile? Orijinal düzen? ...? –

+0

Sadece AST ağacına sahip olmak istiyorum. Bazı IDE – Natalia

+0

için intellisense'i yönetmek istediğimi varsayalım AST'nin hangi bölümlerinin değişiklikten etkilendiğini nasıl bilebilirdiniz? – stryba

cevap

1

Orada gerçekleştirmek isteyebileceğiniz şeyleri içeren birkaç proje var. Ama ANTLR bunu destekleyip desteklemediğini bilmiyorum. Bir göz atabilirsin: http://en.wikipedia.org/wiki/Incremental_compiler

Yalnızca sözdizimi vurgulama önermek için sözdiziminizdeki farklı belirtecin düzenli ifadesini kullanmanızı öneririm. (Üzerinde çalıştığınız satırı güncelleştirirseniz, herhangi bir performans sorunu yaşanmaz.)