Другая заслуживающая упоминания библиотека - это animate.css . Он отлично работает с jQuery, и вы можете делать много интересных анимаций, просто переключая класс CSS.
Как ..
$ ("# slide"). Toggle (). ToggleClass ('animated bounceInLeft');
У меня есть модифицированная версия парсера ActionScript (написана на AS, а не анализирует AS), которая поддерживает пользовательские функции, но не строки. Хотя, вероятно, было бы легко добавить поддержку строк. Я загружу его куда-нибудь, чтобы вы могли получить его по адресу http://silentmatt.com/parser2.js http://silentmatt.com/parser3.js .
Изменить: Я довольно легко добавил базовую поддержку строк. Он не поддерживает escape-последовательности, и toJSFunction не работает, но потребовалось всего несколько минут, чтобы он заработал. Изменение оператора конкатенации на "||" тоже должно быть довольно легко.
Вот как вы оцениваете свои примеры выражений:
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
Я не помню, почему я использовал точки с запятой в качестве разделителей аргументов; Я думаю, это как-то связано с различием между функциями и встроенными «операторными» функциями.
Другое редактирование:
Я немного поигрался с этим, и теперь есть версия с лучшей поддержкой строк на http://silentmatt.com/parser3.js (toJSFunction работает, и вы можете использовать стандартные escape-последовательности JavaScript). Он также использует запятые для разделения аргументов для всех функций и ||
в качестве оператора конкатенации строк вместо +
, который выполняет только сложение.
||
в качестве оператора конкатенации строк вместо +
, который выполняет только сложение. и вы можете использовать стандартные escape-последовательности JavaScript). Он также использует запятые для разделения аргументов для всех функций и ||
в качестве оператора конкатенации строк вместо +
, который выполняет только сложение. Assuming you mean a javascript parser in javascript, you probably want eval()
see: https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval
Just note that eval, if used improperly, can represent a security risk.
haven't used it, but a quick google reveals http://jsfromhell.com/classes/math-parser
edit:
What you want to do may be out of reach of the first link, you could also have a look at Douglas Crockford's "parser for Simplified JavaScript"
It's just a parser, so you would have to do all the evaluation yourself. It would, however, make it somewhat easier and it doesn't use eval.
См. Это руководство, чтобы узнать, как создавать произвольные анализаторы / компиляторы. (По сути, это автоматизирует построение парсеров рекурсивного спуска из грамматик, что означает, что вы можете легко изменить синтаксис выражения). Все руководство написано на JavaScript, поэтому оно применимо непосредственно к вам.
Нарцисс реализует правильный парсер JS в JS: http://mxr.mozilla.org/mozilla/source/js/narcissus/jsparse.js . Написано также Бренданом Эйхом (создателем JS)!