Динамический анализ логического выражения / оценка в PHP?

Плюсы:

  • Работает с любым JSON-кодировщиком или даже с описанием python.
  • Короткое (ish), похоже, работает.

Минусы:

  • Уродливое regexp hack, едва протестированное.
  • Квадратичная сложность.
    def fix_floats(json, decimals=2, quote='"'):
        pattern = r'^((?:(?:"(?:\\.|[^\\"])*?")|[^"])*?)(-?\d+\.\d{'+str(decimals)+'}\d+)'
        pattern = re.sub('"', quote, pattern) 
        fmt = "%%.%df" % decimals
        n = 1
        while n:
            json, n = re.subn(pattern, lambda m: m.group(1)+(fmt % float(m.group(2)).rstrip('0')), json)
        return json
    
11
задан cletus 29 November 2008 в 02:21
поделиться

3 ответа

Проверьте create_function, он создает анонимную функцию из переданных строковых параметров, я не уверен в ее производительности, но это очень гибко...

3
ответ дан 3 December 2019 в 08:06
поделиться

Смотрите на мой инфикс для добавления постфикса примера, я думаю, что Вы могли портировать его на PHP с относительной простотой. Это только использует массив и некоторые переключатели. Никакие деревья. Стек только необходим для выполнения постфиксного результата.

0
ответ дан 3 December 2019 в 08:06
поделиться

Если я понимаю проблему правильно, Вы хотите, чтобы пользователи выписали функции в non-PHP, и затем иметь PHP интерпретируют его?

Если так, Вы могли просто взять их строку и заменить "лейтенанта"" <" и "gt" с">"... затем делают оценку ().

У меня есть догадка, проблема не это простое, но если это, оценка () могла бы сделать задание. Конечно, затем Вы открываете себя для любого вида нападения.

1
ответ дан 3 December 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: