Формула-шаблон и её последующий просчёт

346
29 апреля 2017, 21:23

Всем добрый вечер! Кто нибудь может помочь, с такой задачкой... Есть шаблон формулы например всем известного дискриминанта D=b^2-4ac и последующий подсчёт корней (но это уже потом), и есть например строчка ввёдная юзером 6x^2-4x-75 как их совместить, то-есть сделать просчёт по формуле? Я не говорю "как сделать запил под одну формулу?", я хочу спросить как распарсить данный нам string хотя-бы на массив вида [6x^2;-4x;-75], то-есть чтобы можно было сделать под разные другие формулы?

Answer 1

Задача решается так:

  1. Определяемся с синтаксисом, то есть понимаем , что ^ знак возведения в степень, как трактуется знак умножения, скобки и проч.
  2. Далее задаемся генератором/лексическим анализатором - неполный список здесь
  3. Задаем нашу грамматику в терминах выбранного генератора (обычно задается в виде настроек)
  4. Генерируем парсер на выбранном языке
  5. Кастомизируем под себя и встраиваем в свой проект

Обычно парсер работает в 3 прохода:

  1. Разбивка исходной строки на токены/лексемы
  2. Генерация дерева инструкций (в соответствии с грамматикой и правилами приоритетов операций - в тупом варианте это как раз польская инверсная запись)
  3. Исполнение инструкций (обычно рекурсивно или через стек)

P.S. Такое написание парсера, это стандартная курсовая 1 или 2-го курса буржуйского Computer Science. Для прогера среднего уровня агрессивности - это задачка на пару часов.

READ ALSO
Как убрать кнопку в Twitter Digits

Как убрать кнопку в Twitter Digits

Я недавно только начал использовать Twitter Digits для авторизации в приложении по номеру телефонаВ документациях говорится только о кастомизациях...

283
Как заставить работать clip-path в Firefox

Как заставить работать clip-path в Firefox

Здравствуйте как заставить работать clip-path в Firefox ?

252
Как взять свойства вложенного объекта[Javascript]

Как взять свойства вложенного объекта[Javascript]

Здравствуйте, мне нужно заполнить таблицу из массива JSON объектовЯ написал фрагмент кода который создаёт ячейки и заполняет их, но проблема...

239