Как из строки получить выражение?

Рейтинг: 0Ответов: 3Опубликовано: 08.05.2011

Описываю задачу: Пользователь вводит в текстовое поле например: y = x + 1 + x^2; Программа должна посчитать значение у. Значение x будет константным и вшитым в программу. Как реализовать?

Ответы

▲ 4Принят

Написать синтаксический анализатор, который преобразует текст введённый пользователем, в некоторую объектную модель. Дальше могут быть варианты.

  1. Модель может быть объектной моделью лямбда-выражений. В этом случае Вы можете просто использовать метод Compile класса LambdaExpression для получения исполняемого метода.
  2. Модель может быть в Вашем формате, но после получения разобранного дерева она конверитруется в Expression, и задача сводится к случаю 1.
  3. Вы реализуете в Вашей модели паттерн "посетитель" и пишете посетителя, который каждый узел Вашего дерева выражения конвертирует в делегат. После обхода дерева у Вас получается делегат, выполняющий его содержимое.
▲ 3

Через обратную польскую запись это делается.

▲ 1

vbvm, msscript под винь.