2009-03-05 20 views
0

İlk sözcük olarak bir anahtar sözcük içeren bir komut içeren her satırın sözdizimini doğrulamak gereken bir uygulama yapıyorum.
Ayrıca, sözdizimi doğruysa, anahtar sözcüklerde kullanılan değişkenlerin türünü kontrol etmem gerekiyor.Ayrıştırıcı, RegEx ve XML kullanarak, C#

bir yazdırma komutu varsa gibi: Bu, kullanılan değişkenler ayıklamak ve türünü doğrulamak için varyant grubundaki tüm kelimeleri ulaşmak olduğunu

\s*[<>]\s*((?'variant'\w+)(\[\d+\])*) 

:

print "string" < variable < "some another string" //some comments 

    print\s".*"((\s?<\s?".*")*\s?<\s?(?'string1'\w+))?(\s*//.*)? 

Yani ben şu Regex yapılan .
Bunun gibi benim aracım çok sayıda anahtar kelimeye sahip ve şu anda her anahtar kelime için düzenli bir şekilde yazım kurallarına uyuyorum. Ve yarın bir değişiklik olursa, her anahtar kelimenin her yerinde her zaman ilgili değişikliği değiştirirdim.
XML dosyasındaki her anahtar kelime için bir Regex saklıyorum. Ancak şartname değişiklikleri yarın yüzden sadece bir kez değiştirmeniz gerekir ki burada, bu genişletilebilir yapımında ilgilendi ve ben baskı regex dönüşümü gibi her yerde bir şey yansıtacak: Böyle Şimdi

print %string% (%<% %string%|%variable%)* %comments% 

Ben her anahtar kelime için bir özellik yazıp, regexlerini saklayan başka bir dosyada dizge, değişken, yorumların tanımını yazarım. Sonra bu dizeyi ayrıştırıp benim için bir regex dizesi yaratan bir çözümleyici yazarım.

Bu mümkün mü?

Bunu yapmanın daha iyi bir yolu var mı, yoksa bunu XML'de yapabileceğim bir yol var mı?

cevap

0

Bir fikrim var ve kendi değiştiricimi yaptım. Düzenli ifademi tanımlamak için% myname% tür etiketi kullandım ve regex kullanarak% myname% etiketinin tanımını ayrı ayrı yazdım. Ardından, dizeyi yinelemeli olarak taradım ve% myname% etiketinin ortaya çıkmasını, sahip oldukları belirtime dönüştürdüm. Benim iş yaptı.

herhangi bir şekilde Teşekkürler