PHP'de Flex/Bison (veya Lex/Yacc, et. Al.) Desteğini almanın bir yolunu arıyorum. Spesifik olarak, bir web kullanıcı arayüzünde bir boolean sorgu ayrıştırıcısını uyguluyorum ve PHP'nin içindeki tüm işlemleri (C ayrıştırıcısını çağırmaktan veya bir şeyi Python'a iletmekten farklı olarak) kullanmayı tercih ediyorum. PHPFlex/Bison benzeri işlevsellik
cevap
LIME Ayrıştırıcı Jeneratör:
Komple LALR (1) ayrıştırıcı jeneratör ve (bizon veya yacc gibi) motor ama hepsi PHP yapılan , ve giriş dilbilgisi daha kolay ve daha rahat olduğu . PHP'deki eylemlerinizi yazın. PHP çıkış kodunu üretin. Ayrıştırıcınızı PHP ile sürün. Dil yapmak ister misin?
güncelleme:
yukarıda yazdım, ben burada açıklanacak, ayrıştırıcı nesil için diğer bazı araçlar olduğunu görüyoruz: Bunlar ise
http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/
emin değil 2014'te daha iyi bir şekilde devam etmekteyim, fakat Wez Furlong'u tanıyorum, PDO'nun orijinal geliştiricisi ve çok iyi bir geliştiriciydi.
PEAR kitaplığı LexerGenerator ve ParserGenerator sınıflarına sahiptir. LexerGenerator sözdizimi re2c ile uyumludur, ParserGenerator sözdizimi Lemon Parser generator ile uyumludur.
PHP'de PEG ayrıştırıcı jeneratörlerine bakmayı denediniz mi: https://github.com/maetl/php-peg?
Veya bir çözümleyici birleştirici yaklaşımı: http://qntm.org/locoparser?
Bunu hiç kullandınız mı? Şu anda neredeyse iki yıldan beri güncellenmemiştir ve açık ya da kapalı herhangi bir dosyalama hatası yoktur, bu yüzden test edildiğine ya da gerçekten kullanıldığına güvenmekten çekiniyorum. – Wang
Hayır, PHP'de tam gelişmiş bir ayrıştırıcı uygulamaya gerek duymadım. Vazgeçilmez olması ve başka bir araç bulunmaması, PHP'nin işleri ayrıştırmak için doğru araç olmadığı konusunda bir ipucu olabilir. –
Birisi güncellemeye çalışıyor gibi görünüyor: https://github.com/rvanvelzen/lime (2 yıla dokunulmadı, ama bu bir başlangıç!) – Andrea