2011-05-05 44 views
16

Çok güzel bir araç Xtext'e, orada düzenleme için IDE'nin yanı sıra IDE oluşturmaya başladım. Web'de arama yaptım ve insanların ANTLR'nin tüm özelliklerini sağlamadığını söyleyen insanlar buldum. Ben çözümleyici jeneratörü olarak ANTLR kullanıyorum.XText'in sağlamadığı ANTLR özellikleri nelerdir?

ANTLR I'in özelliklerinin mylanguage için tam ayrıştırıcı yazması gerekeceğinden bile emin değilim, ancak ANTLR oldukça uzun bir süredir var ve muhtemelen Xtext'ten daha fazla özelliği destekliyor.

Herkes bir Xtext dilbilgisinde NEDEN belirtilemeyebilir?

cevap

18

Bir Xtext dilbilgisinde semantik yüklemleri belirtemezsiniz. Ayrıca, Xtext ile keyfi eylemler (okuma: hedef dil kod blokları) eklemek mümkün değildir. Desteklenen tek hedef platform Java'dır. İyi haber şu ki, Xtext bu kısıtlamalara yol açarak büyük yarar sağlar, örn. Dilbilginizle eşleşen rasgele model/sözdizimi grafiklerini serileştirmeye izin veren bir bağımsız çözüm alacaksınız. Sözdizimi grafikleri hakkında konuşarak, Xtext ile IDE'nizde düzenleyebileceğiniz dilinize AST yazabilirsiniz.

Xtext'in temsilinde benzersiz bir dilbilgisi özelliği, sıralanmamış gruplar. Yani, gramerinizdeki belirli öğelerin keyfi sırayla ancak her biri yalnızca bir kez gerçekleşebileceğini doğrudan ifade edebilirsiniz. Eğer java değiştiricileri düşünürseniz, bu çok kullanışlı olabilir:

visibility=('public'|'private') // this is a mandatory assignment 
& abstractOrFinal=('abstract'|'final')? // this is optional 
& static?='static'? // this will become a boolean value in your ast 

gramer dili hakkında daha fazla ayrıntı için Xtext docs göz at.

+0

Xtext, içten ANTLR ve afaik kullanıyor, kesinlikle daha iyi biliyorsunuz, Xtext er ya da daha sonra operatörün önceliği vb. Gibi ANTLR özelliklerinden daha fazlasını destekleyecektir? :) –

+0

Xtext, Eylemler kavramına sahiptir. Operatör önceliğini uygulamak için Antlr'ın kara kutu hedef dili hazır parçaları ile karıştırılmalıdır. Özellikle hataların giderilmesinin çok önemli olduğu interaktif bir ortamda, bizim için çok iyi çalışıyor. Öncelikle, Antlr'ın öncelikleri uygulamak için yeni planını taşıyacağımızdan şüpheliyim. –