Не совсем ..
Псевдокласс класса
blockquote>:nth-child
соответствует элементу с + b -1 братья и сестры перед ним в дереве документов, для данного положительного или нулевого значения для n и имеет родительский элемент.Он является селектором и не сочетается с классами , В вашем правиле он просто должен удовлетворять обоим селекторам одновременно, поэтому он отображает строки таблицы
:nth-child(even)
, если они также имеют класс.row
.
Если это будет часто использоваться и если бы это будет расширено в будущем, я почти рекомендовал бы добавить или Python или Lua в Ваш код. Lua является очень легким языком сценариев, в который можно сцепиться и обеспечить новые функции, операторы и т.д. Если Вы хотите сделать больше устойчивых и сложных вещей, используйте Python вместо этого.
Можно представить формулу как дерево операций и подвыражений. Можно хотеть определить типы или константы для Операционных типов и Переменных.
Можно затем легко достаточно записать метод, который рекурсивно вызывает через дерево, применяя соответствующие операции к любым значениям, в которых Вы передаете.
Создание Вашего собственного синтаксического анализатора для этого должно быть простой операцией:
) преобразуйте уравнение от инфикса до постфиксной записи (типичное compsci присвоение) (я использовал бы стек)), ожидают для получения значений, которые Вы хотите), выталкивают стопку инфиксных объектов, отбрасывая значение для переменной в при необходимости), результаты дисплея
Используя Дух (например), для парсинга (и 'семантические действия' это обеспечивает для построения дерева выражений, которым можно затем управлять, например, оценить) походит на настоящее простое решение. Можно найти грамматику для арифметических выражений там, например, в случае необходимости... (довольно просто придумать собственное).
Примечание: Дух очень прост учиться, и вполне адаптированный к таким задачам.
Обычно существует два способа сделать его с тремя возможными реализациями:
Вторая опция здесь обычно делается или путем компиляции чего-то, что может быть загружено в как своего рода плагин, или это может быть скомпилировано в отдельную программу, которая затем вызывается и производит необходимый вывод.
Для C++ я предположил бы, что библиотека для оценки будет, вероятно, существовать где-нибудь, таким образом, это будет то, где я запустил бы.
Для создания жизни легче я думаю, получая этот вид входа, лучше всего сделан через GUI, где пользователи ограничиваются в том, что они могут ввести.
Если Вы планируете выполнение его из командной строки (который является впечатлением, которое я получаю из Вашего сообщения), то необходимо, вероятно, определить строгий набор допустимых исходных данных (например, только однобуквенные переменные, никакой пробел и только определенные математические символы: () +-*/и т.д.).
Затем Вы должны будете:
Читайте во входном массиве символов
Проанализируйте его для создания списка переменных и действий
Выполните те действия - в порядке BOMDAS
С ANTLR можно создать синтаксический анализатор/компилятор, который интерпретирует ввод данных пользователем, затем выполнить вычисления с помощью Шаблона "посетитель". Хороший пример здесь, но это находится в C#. Необходимо смочь адаптировать его быстро к потребностям и остаться использовать C++ в качестве платформы разработки.
Если Вы хотите записать свое собственное, ищите "формальные автоматы" и/или "грамматику конечного автомата"
В целом то, что Вы сделаете, проанализировать строку, продвигая символы на стеке, когда Вы идете. Затем начните выталкивать символы прочь и выполните задачи на основе того, что выталкивается. Легче кодировать при принуждении уравнений к обратной польской записи.