Как лучше всего написать парсер запросов типа No SQL на Python / Java / Javascript? - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать динамический 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 советы, или я где-то ошибаюсь?

...