Я даю пользователю возможность вводить строки с уникальными ключами, которые представляют собой однострочный сложный оператор c # (одна строка кода, подобная ' 2 + (a - (x && y? 1: 7)) '. Оператор может использовать переменные Nullable<bool>
и Nullable<double>
. При запуске у меня есть Dictionary<string, object>
предопределенных значений. Пользователь может использовать эти переменные и стандартные операторы c #: +, -, *, /, &&, ||,!, (),>,> =, <, <=, ==,! =,? a: b, ??. </p>
Мне нужно повторно использовать механизм приоритетов операторов c # и ошибки компиляции, предупреждения и сообщения(что выводится после компиляции)
- как скомпилировать входную строку и получить сообщения об ошибках?
- как предопределить переменные, которые используются в строке, перед компиляцией (сгенерировать код как
var x = new Nullable<bool>(true);
или что-то иное)? - можно ли получать сообщения об ошибках на русском языке?
- можно ли сохранить результат компиляции для улучшения производительности (функция будет вызываться несколько раз позже)?