ActionScript parser (AS'de değil AS ile yazılmış), özel işlevleri destekleyen, ancak dizeleri olmayan değiştirilmiş bir sürümüm var. Yine de string desteği eklemek çok kolay olurdu. Bir yere yükleyeceğim, böylece http://silentmatt.com/parser2.jshttp://silentmatt.com/parser3.js'dan edinebilirsiniz.
Düzenleme: Dizeler için temel desteği oldukça kolay ekledim. Kaçış sıralarını desteklemiyor ve JSFunction çalışmıyor, ancak çalışmasını sağlamak sadece birkaç dakika sürdü. Birleştirme işlecini "||" olarak değiştirmek çok kolay olmalı. İşte
size örnek ifadeleri değerlendirmek gibi olacaktır: Ben argüman Ayraç olarak virgül kullanılır neden hatırlamıyorum
js> var parser = new Parser();
js> parser.parse("3 * (2 + 1) - 1").evaluate();
8
js> parser.parse("2 * func(2; 2)").evaluate({ func:Math.pow });
8
js> function substr(s, start, end) { return s.substring(start, end); }
js> parser.parse("func('hello world'; 0; 5) + ' you'").evaluate({ func:substr });
hello you
; Fonksiyonlar ve yerleşik "operatör" fonksiyonları arasında ayrım yapmakla ilgili bir şey olduğunu düşünüyorum.
başka düzenleme:
bu biraz ile oynuyorum ve şimdi http://silentmatt.com/parser3.js daha iyi dize desteği olan bir versiyon (toJSFunction çalışır ve standart JavaScript dizileri kaçış kullanabilirsiniz) var. Ayrıca, tüm işlevler için bağımsız değişkenleri ve ||
'u yalnızca ekleme eki olan +
yerine dize birleştirme işleci olarak ayırmak için virgülleri kullanır.
Eğer bir javascript ayrıştırıcı arıyoruz farklı bir dilde koşmak için? javascript ayrıştırıcısının C++ uygulaması gibi mi? Ya da javascript için javascript'te bir şey? –
Bu konuda net olmasaydım özür dilerim. Hayır, javascript ile yazılmış, yukarıda açıklandığı gibi basit ifadeyi ayrıştıran ve değerlendiren bir ayrıştırıcıyı kastediyorum. –
, "özel" işlevler kümesi bilinmektedir? –