Динамический контроль пользователя по переменным (встроенный язык?)
-
26-09-2019 - |
Вопрос
Я создаю часть программного обеспечения (написано в C #, будет приложение Windows), и я столкнулся с этой проблемой
У меня есть набор переменных, и мне нужно позволить пользователю определять широкий спектр математических функций на этих переменных.
Но мои пользователи не обязательно должны иметь какие-либо предварительные знания о программировании.
Варианты, которые я рассмотрел:
- Создайте своего рода графический интерфейс для определения математических «функций». Но это очень ограничивает.
- Реализуйте очень простой встроенный язык, который будет предлагать гибкость, оставаясь относительно легко понять. Я посмотрел на Луа, но проблема с той в том, что вам в значительной степени необходимо иметь предварительные знания в программировании. Я думал о чем-то более читаемом (несколько похоже на SQL), например «Назначить 3 к х;»
Другие идеи приветствуются.
Я в основном ищете лучший способ пойти сюда, под предположением, что у моих пользователей нет знаний в программировании.
Однако обратите внимание, что это не главная особенность моего программного обеспечения, поэтому я предполагаю, что если пользователь хочет / должен использовать эту функцию, он найдет время, чтобы посмотреть в руководстве на несколько минут и узнать, как сделать Итак, пока это не слишком сложно.
Спасибо, Малки :)
Решение
Что вы хотите, это Укрепительный язык домена. Отказ Я вижу, вы пробовали Луа и не нашли этого приемлемого - я предполагаю, что большинство предполагаемых языков сценариев выше.
В зависимости от вашей ожидаемой сложности функции, я бы порекомендовал, чтобы вы дали выстрел на реализацию небольшого Рекурсивный анализатор так что вы можете точно Укажите свой язык. Таким образом, вы можете понять что-то вроде:
assign 3 to X
show sin(X * 5)
Если это немного помимо того, что вы готовы сделать, вы можете получить некоторую помощь в разборке из библиотеки, такой как Ирония; Это позволит вам сосредоточиться на использовании абстрактного синтаксического дерева, а не в течение некоторого времени, чтобы играть с токеном / Lexing.
Если вы хотите, вы даже можете посмотреть на БЕЖАТЬ, который будет анализировать и оценивать некоторые довольно сложные выражения прямо из ворот.
Другие советы
Antlr - это огромный парсер, если вы хотите сделать свой собственный язык