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

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010
  • PUSHER

    PUSHER

    11 HAZİRAN 2014