Динамический контроль пользователя по переменным (встроенный язык?)

StackOverflow https://stackoverflow.com/questions/4018565

Вопрос

Я создаю часть программного обеспечения (написано в C #, будет приложение Windows), и я столкнулся с этой проблемой

У меня есть набор переменных, и мне нужно позволить пользователю определять широкий спектр математических функций на этих переменных.

Но мои пользователи не обязательно должны иметь какие-либо предварительные знания о программировании.

Варианты, которые я рассмотрел:

  • Создайте своего рода графический интерфейс для определения математических «функций». Но это очень ограничивает.
  • Реализуйте очень простой встроенный язык, который будет предлагать гибкость, оставаясь относительно легко понять. Я посмотрел на Луа, но проблема с той в том, что вам в значительной степени необходимо иметь предварительные знания в программировании. Я думал о чем-то более читаемом (несколько похоже на SQL), например «Назначить 3 к х;»

Другие идеи приветствуются.

Я в основном ищете лучший способ пойти сюда, под предположением, что у моих пользователей нет знаний в программировании.

Однако обратите внимание, что это не главная особенность моего программного обеспечения, поэтому я предполагаю, что если пользователь хочет / должен использовать эту функцию, он найдет время, чтобы посмотреть в руководстве на несколько минут и узнать, как сделать Итак, пока это не слишком сложно.

Спасибо, Малки :)

Это было полезно?

Решение

Что вы хотите, это Укрепительный язык домена. Отказ Я вижу, вы пробовали Луа и не нашли этого приемлемого - я предполагаю, что большинство предполагаемых языков сценариев выше.

В зависимости от вашей ожидаемой сложности функции, я бы порекомендовал, чтобы вы дали выстрел на реализацию небольшого Рекурсивный анализатор так что вы можете точно Укажите свой язык. Таким образом, вы можете понять что-то вроде:

assign 3 to X
show sin(X * 5)

Если это немного помимо того, что вы готовы сделать, вы можете получить некоторую помощь в разборке из библиотеки, такой как Ирония; Это позволит вам сосредоточиться на использовании абстрактного синтаксического дерева, а не в течение некоторого времени, чтобы играть с токеном / Lexing.

Если вы хотите, вы даже можете посмотреть на БЕЖАТЬ, который будет анализировать и оценивать некоторые довольно сложные выражения прямо из ворот.

Другие советы

Antlr - это огромный парсер, если вы хотите сделать свой собственный язык

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top