Я пытаюсь создать динамический c анализатор запросов, чтобы упростить обработку условий в бэкэнде / внешнем интерфейсе. Этот парсер запросов должен смотреть на определенные условия и обрабатывать входные данные. в MongoDB / Solr.На данный момент мне нужно реализовать его в Javascript, Java и Python.
Предположим, что операции, которые я хочу поддерживать: gte (больше или равно to), или, in, и . Я добавил образец JSON правило ниже.
rules = [
{
"age": "20",
"school": "Harvard",
"branch__in": ["Computer Science", "Engineering", "Economics"],
"score__gte": 150
},
{
"age": "22",
"school": "MIT",
"and": [
{
"subjects": "Robotics",
"score__gte": 120
},
{
"subjects": "Analytics",
"score__gte": 250
}
]
}
]
Переходя к вопросу, я сомневаюсь, как лучше всего чтобы создать здесь синтаксический анализатор, например,
score__gte -> field_name - это «score», «__» - это разделитель , «gte» - это оператор больше или равно. Это поле динамического c, имя_поля может быть любым, что будет частью правила. Здесь я должен просто создать синтаксический анализатор строк, чтобы обнаружить оператор.
Шаг 1) Найдите «__», разделитель
Шаг 2) Если не найден, выполните прямое сравнение
Шаг 3) Если найдено, разделить на «__»
Шаг 4) Вторая строка будет оператором здесь, «gte»
Шаг 5) Выполните сравнение строк для проверки оператора, operator=="gte"
Шаг 6) Выполните операцию «больше или равно»
Я планирую следовать OOPS для того же, со всеми необходимыми вспомогательными функциями, мне просто нужно знать, есть ли у кого-нибудь идеи получше, или какие-то c советы, или я где-то ошибаюсь?