Вопрос

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

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

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

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

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

Решение

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

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

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

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

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