Ho una versione modificata di un ActionScript parser (scritto in AS, non analizza AS) che supporta le funzioni personalizzate, ma non le stringhe. Tuttavia, sarebbe probabilmente facile aggiungere il supporto per le stringhe. Lo caricherò da qualche parte in modo da poterlo ottenere a http://silentmatt.com/parser2.jshttp://silentmatt.com/parser3.js.
Modifica: Ho aggiunto il supporto di base per le stringhe piuttosto facilmente. Non supporta le sequenze di escape e toJSFunction non funziona, ma ci sono voluti solo pochi minuti per farlo funzionare. Modifica dell'operatore di concatenazione su "||" dovrebbe essere abbastanza facile anche
Ecco come si dovrebbe valutare le espressioni di esempio:
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
non mi ricordo perché ho usato il punto e virgola come separatori di argomenti; Penso che abbia qualcosa a che fare con la differenziazione tra funzioni e funzioni "operatore" integrate.
Un'altra modifica:
Ho giocato con questo un po ', e ora c'è una versione con supporto migliore stringa in http://silentmatt.com/parser3.js (toJSFunction funziona, ed è possibile utilizzare JavaScript standard sequenze di escape). Utilizza inoltre le virgole per separare gli argomenti per tutte le funzioni e ||
come operatore di concatenazione di stringhe invece di +
, che aggiunge solo.
fonte
2009-06-27 20:15:29
Sei alla ricerca di un parser javascript eseguire in una lingua diversa? come un'implementazione C++ di un parser javascript? O qualcosa in javascript per javascript? –
Scusate se non sono stato chiaro a riguardo. No, intendo un parser scritto in javascript che analizza e valuta l'espressione semplice come descritto sopra. –
è noto l'insieme delle funzioni "personalizzate"? –