Автоматическое построение С#-парсера по BNF-грамматике
От: Andy77 Ниоткуда  
Дата: 08.12.04 22:09
Оценка:
Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что 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-грамматике
От: krasin Россия  
Дата: 08.12.04 22:30
Оценка: 12 (2)
A>Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется.

Попробуй посмотреть GoldParser (http://www.devincook.com/goldparser/).
Мне он нравится.
Re[2]: Автоматическое построение С#-парсера по BNF-грамматик
От: Andy77 Ниоткуда  
Дата: 08.12.04 22:47
Оценка:
Здравствуйте, krasin, Вы писали:

K>Попробуй посмотреть GoldParser (http://www.devincook.com/goldparser/).

K>Мне он нравится.

Похоже, что он не генерирует код на C# — для парсинга нужно будет использовать внешний "C# Engine", а это нежелательно для такой небольшой задачи.

Нашел еще http://www.nongnu.org/grammatica/ , но она не понимает BNF
Re[3]: Автоматическое построение С#-парсера по BNF-грамматик
От: krasin Россия  
Дата: 08.12.04 22:54
Оценка:
A>Похоже, что он не генерирует код на C# — для парсинга нужно будет использовать внешний "C# Engine", а это нежелательно для такой небольшой задачи.

Нет, там все хорошо — там этот "внешний C# Engine" с исходниками. Просто включаете себе в проект и пользуетесь.
Re[4]: Автоматическое построение С#-парсера по BNF-грамматик
От: Andy77 Ниоткуда  
Дата: 08.12.04 23:36
Оценка: :)
Здравствуйте, krasin, Вы писали:

K>Нет, там все хорошо — там этот "внешний C# Engine" с исходниками. Просто включаете себе в проект и пользуетесь.


Grammatica заодно генерирует analizer — класс с виртуальными методами типа Enter<MyTerm> / Exit<MyTerm> — удобно, хотелось бы того же. В общем, пока мы с Вами тут дискутировали, я уже написал парсер вручную, им и воспользуюсь, если (пока) не появятся дополнительные требования.
Re: Автоматическое построение С#-парсера по BNF-грамматике
От: TK Лес кывт.рф
Дата: 09.12.04 07:40
Оценка: 4 (1)
Hello, "Andy77"
> Возникла необходимость разбирать простенькие выражения, вводимые пользователем. Написал только что BNF, теперь хочу получить парсер этой грамматики на C#. Задача, скорее всего, одноразовая, поэтому связываться с коммерческими пакетами не хочется. Быстрый поиск в гугле ничего интересного не дал. Вручную писать не хочется.
>

Посмотри antlr умеет генерировать парсеры на C#. Правда, грамматика отличается от BNF.
Сам генератор написан на java, но при желании можно откомпилировать в J# — если не хочется ставить java машину.
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Автоматическое построение С#-парсера по BNF-грамматике
От: OlegO Россия http://www.mediachase.ru
Дата: 09.12.04 12:28
Оценка: 4 (1) +1
Здравствуйте, 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#, как достаточно легкий вариант

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/
http://www.scifac.ru.ac.za/coco/cshcoco.htm
С уважением, OlegO.
Re[2]: Автоматическое построение С#-парсера по BNF-грамматик
От: gloomy rocker Россия  
Дата: 09.12.04 14:17
Оценка:
Здравствуйте, OlegO, Вы писали:

OO>Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант

Отличный инструмент
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Скука — двигатель прогресса.
Re[3]: Автоматическое построение С#-парсера по BNF-грамматик
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.12.04 23:15
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

GR>Здравствуйте, OlegO, Вы писали:


OO>>Я бы порекомендовал Coco/R for C#, как достаточно легкий вариант

GR>Отличный инструмент

Но брать его нужно тут: http://gzip.rsdn.ru/projects/RSharp/vcs.aspx

Тут он кошернее. Со студией интегрируется и многие проблемы пофиксены. Единственная проблема я его на C# 2.0 перевел.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Автоматическое построение С#-парсера по BNF-грамматике
От: r0mario  
Дата: 10.12.04 09:28
Оценка:
попробуй coco parser generator.
по заданной грамматике генерирует исходный код парсера на языке C# (есть версии для других языков)
есть пример задания грамматики для самого языка C#

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/
Re[4]: Автоматическое построение С#-парсера по BNF-грамматик
От: Ёрик  
Дата: 27.06.06 14:41
Оценка:
Здравствуйте, 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-грамматик
От: Ёрик  
Дата: 27.06.06 15:05
Оценка:
Здравствуйте, Ёрик, Вы писали:

Ё>Здравствуйте, 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 перевел.

Ё>Нету, говорят.
Ё>Переехал куда что ли?
Ё>Подскажите новую ссылку плиз.
Уже нашел. Сложно как там все=)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.