Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется.
Вот и сама грамматика —
QUERY ::= RULE [, RULE]
RULE ::= NUMBER | RANGE | COMPARISON
RANGE ::= NUMBER '..' NUMBER
COMPARISON ::= {'<' | '>'} NUMBER
NUMBER ::= [whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
Есть ли какие-нибудь идеи?
Заранее спасибо.
Re: Автоматическое построение С#-парсера по BNF-грамматике
A>Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется.
Здравствуйте, krasin, Вы писали:
K>Нет, там все хорошо — там этот "внешний C# Engine" с исходниками. Просто включаете себе в проект и пользуетесь.
Grammatica заодно генерирует analizer — класс с виртуальными методами типа Enter<MyTerm> / Exit<MyTerm> — удобно, хотелось бы того же. В общем, пока мы с Вами тут дискутировали, я уже написал парсер вручную, им и воспользуюсь, если (пока) не появятся дополнительные требования.
Re: Автоматическое построение С#-парсера по BNF-грамматике
Hello, "Andy77" > Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется. >
Посмотри antlr умеет генерировать парсеры на C#. Правда, грамматика отличается от BNF.
Сам генератор написан на java, но при желании можно откомпилировать в J# — если не хочется ставить java машину.
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Автоматическое построение С#-парсера по BNF-грамматике
Здравствуйте, Andy77, Вы писали:
A>Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется.
A>Вот и сама грамматика —
A>
A>QUERY ::= RULE [, RULE]
A>RULE ::= NUMBER | RANGE | COMPARISON
A>RANGE ::= NUMBER '..' NUMBER
A>COMPARISON ::= {'<' | '>'} NUMBER
A>NUMBER ::= [whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
A>
A>Есть ли какие-нибудь идеи? A>Заранее спасибо.
Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант
Здравствуйте, gloomy rocker, Вы писали:
GR>Здравствуйте, OlegO, Вы писали:
OO>>Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант GR>Отличный инструмент
попробуй coco parser generator.
по заданной грамматике генерирует исходный код парсера на языке C# (есть версии для других языков)
есть пример задания грамматики для самого языка C#
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, gloomy rocker, Вы писали:
GR>>Здравствуйте, OlegO, Вы писали:
OO>>>Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант GR>>Отличный инструмент
VD>Но брать его нужно тут: http://gzip.rsdn.ru/projects/RSharp/vcs.aspx
VD>Тут он кошернее. Со студией интегрируется и многие проблемы пофиксены. Единственная проблема я его на C# 2.0 перевел.
Нету, говорят.
Переехал куда что ли?
Подскажите новую ссылку плиз.
Re[5]: Автоматическое построение С#-парсера по BNF-грамматик
Здравствуйте, Ёрик, Вы писали:
Ё>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, gloomy rocker, Вы писали:
GR>>>Здравствуйте, OlegO, Вы писали:
OO>>>>Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант GR>>>Отличный инструмент
VD>>Но брать его нужно тут: http://gzip.rsdn.ru/projects/RSharp/vcs.aspx
VD>>Тут он кошернее. Со студией интегрируется и многие проблемы пофиксены. Единственная проблема я его на C# 2.0 перевел. Ё>Нету, говорят. Ё>Переехал куда что ли? Ё>Подскажите новую ссылку плиз.
Уже нашел. Сложно как там все=)