SORU
11 EYLÜL 2011, Pazar


Nasıl C Parser yazmak mı#?

Nasıl bir Çözümleyici (Özyinelemeli İniş?) yazmak için ne yapmam lazım C#? Şimdilik sadece aritmetik ifadeler (değişkenler okur?) ayrıştırıcı bu basit bir ayrıştırıcı istiyorum. Ama xml ve html parser yazmayı düşünüyorum (öğrenme amaçlı) daha sonra. Hangi ayrıştırıcıları yararlı şeyler geniş, çünkü bu yapıyorum. Web geliştirme. Programlama Dili Tercümanlarının. Şirket İçi Araçlar. Oyun Motorları. Harita ve Fayans Editörler vb. Ayrıştırıcıları yazma temel teori nedir? Ve nasıl C uygularım#? C# ayrıştırıcıları için doğru dili (bir keresinde C basit aritmetik bir ayrıştırıcı yazdı ve verimli oldu, TAM zamanında derleme eşit derecede iyi kanıtlamak olacak?). Herhangi bir yararlı kaynaklar ve makaleler. Tüm kod örnekleri (veya kod örnekleri için bağlantılar) iyi.

Not: meraktan soruyorum, herkes bu soruyu hiç C ayrıştırıcı uygulanan bir cevap var# mı?

CEVAP
11 EYLÜL 2011, Pazar


C birkaç ayrıştırıcıları hayata# - el yazılı ve araç üretti.

Çok iyi bir tanıtım yazısı ayrıştırma, genel Let's Build a Compiler - gösterilmiştir inşa bir özyinelemeli kökenli ayrıştırıcı, kavramlar kolayca tercüme onun dili (sanırım Pascal) C# için herhangi bir yetkili geliştirici. Bu bir özyinelemeli kökenli ayrıştırıcı işleri öğretecek, ama tamamen kullanışsız tam bir programlama dili elle ayrıştırıcı yazmak için.

Bazı araçlar içine eğerclassical recursive descent parser Bir(TinyPG, , *Coco/R*4)yazmaya kararlı iseniz sizin için kod oluşturmak için bakmak gerekir. Genellikle daha iyi performans ve daha kolay tanımlar (örneğin TDOP parsing Monadic Parsing) ayrıştırıcıları şimdi, yazmak için başka yolları da vardır unutmayın.

İster C konusunda# bu iş için C# En İyi metin kitaplıkları bazı orada vardır. Ayrıştırıcıları bugün (diğer dillerde) bir sürü Unicode vb ile başa çıkmak için kod yok masada. Oldukça religeous olabilir, çünkü çok fazla JİTted kodu hakkında yorum yapmayacağım ancak sadece iyi olmalı. IronJS CLR ayrıştırıcı/a zamanı iyi bir örnektir F yılında yazılmış olsa da (#) ve performansı Google V8 utangaç.

Yan Not:Biçimlendirme ayrıştırıcıları tamamen farklı hayvanlar ile karşılaştırıldığında dil ayrıştırıcıları - onlar, çoğu durumlarda, yazan el - tarayıcı/ayrıştırıcı seviyesi çok basit; genellikle özyinelemeli iniş - ve özellikle davanın XML daha iyidir yoksa yazma bir özyinelemeli kökenli ayrıştırıcı (önlemek için yığın taşması, çünkü bir 'düz' ayrıştırıcı kullanılabilir SAKSAFON/bas modu).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • Samantha Crain

    Samantha Cra

    30 EKİM 2008
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006