Мне необходимо оценить пользовательские логические выражения произвольной сложности на некоторых страницах PHP. Предполагая, что поля формы являются первичными переменными, потребуется:
- заменить "переменные" для формы
значения полей;
- обрабатывать операторы сравнения,
минимально ==, <, <=,> = и> по
символ, имя (например, eq, lt, le, ge, gt
соответственно);
- не обрабатывать логические операторы не, и, или и
возможно xor по имени, символу (например,!,
&&, || и ^^ соответственно);
- обрабатывать литеральные значения для строк
и цифры;
- быть открытым текстом, а не XML (например, «имя»
== '' или фамилия == ''); и
- быть разумным исполнителем.
Теперь, в прошедшие годы, я написал парсеры рекурсивного спуска, которые могли бы строить дерево выражений и делать подобные вещи, но это не та задача, которую я смаковал в PHP, поэтому я надеюсь, что есть вещи, которые будут по крайней мере, покажи мне дорогу туда.
Предложения