Разбор и оценка данных условий - PullRequest
0 голосов
/ 28 июня 2009

Я пытаюсь написать простой синтаксический анализатор для следующего случая в .NET

( [PART3]function1() AND [PART4]function7() ) OR [PART2]function90() 
  • [PART] указывает место оценки (предположим, что это большой текстовый файл, PART разделяет текстовые файлы на большие куски)
  • function() s - моя документированная функция, которая может быть вызвана с помощью этих запросов. Возвращает true или false
  • Исходя из этого True/False и других операторов между ними, я хочу объединить результаты и вернуть одно окончательное значение True или False из всего ввода.

Какой лучший способ реализовать такую ​​вещь в .NET, есть ли какая-нибудь легкая библиотека, которая позволяет мне интегрировать это, или я просто напишу простой парсер, а затем сделаю это сам?

P.S. Я не смог найти хорошее название для вопроса.

Ответы [ 2 ]

1 голос
/ 28 июня 2009

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

1 голос
/ 28 июня 2009

Попробуйте Ирония , хотя и не готовы к прайм-тайм (пока), это показывает некоторое обещание.

Irony - это набор разработчика для реализации языков на платформе .NET. Он использует гибкость и мощь языка c # и .NET Framework 3.5 для реализации совершенно новой и оптимизированной технологии построения компилятора. В отличие от большинства существующих решений в стиле yacc / lex, Irony не использует никакой сканер или генерацию кода синтаксического анализатора из спецификаций грамматики, написанных на специализированном метаязыке. В Irony грамматика целевого языка кодируется непосредственно в c # с использованием перегрузки операторов для выражения грамматических конструкций. Модули сканера и синтаксического анализатора Irony используют грамматику, закодированную как класс c #, для управления процессом синтаксического анализа.

...