Re: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: Graf Alex Украина http://grafalex.oberon.kiev.ua
Дата: 20.11.06 15:25
Оценка: 2 (1)
Здравствуйте, Цунцуяби, Вы писали:

Ц>у спирита что "не так" с левой рекурсией?

Ц>хотелось бы на спирите, потому что знаю. хотя приветствуется все
Ц>Можно ли это сделать на спирите?
Ц>Целевые языки C#,С++,С,Java — в порядке убывание важности
Ц>можно сюда pav@kzts.ru

ANTLR (www.antlr.org)
Леворекурсивный, умеет разбирать с пробелами, умеет генерить все кроме С.
С примерами правда туговато (они там до боли стандартные, или во всяком случае не те которые нужны), но при желании разобраться можно.
Re[2]: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: kig Россия  
Дата: 20.11.06 17:11
Оценка: 2 (1)
Здравствуйте, Graf Alex, Вы писали:

GA>Здравствуйте, Цунцуяби, Вы писали:


Ц>>у спирита что "не так" с левой рекурсией?

Ц>>хотелось бы на спирите, потому что знаю. хотя приветствуется все
Ц>>Можно ли это сделать на спирите?
Ц>>Целевые языки C#,С++,С,Java — в порядке убывание важности
Ц>>можно сюда pav@kzts.ru

GA>ANTLR (www.antlr.org)

GA>Леворекурсивный, умеет разбирать с пробелами, умеет генерить все кроме С.
GA>С примерами правда туговато (они там до боли стандартные, или во всяком случае не те которые нужны), но при желании разобраться можно.

Или coco/r. Правда сканер при токенизации пробелы "ест", но это лечится 3 строчками кода. Плюсы по сравнению с ANTLR — нет необходимости с полученым парсером тащить run-time поддержку. Минусы — менее навороченный, только LL(1) (в ANTLR заказывать можно).
EBNF >> !(boost/Spirit) >> *"может что еще?"
От: Цунцуяби Россия  
Дата: 20.11.06 13:16
Оценка:
Посоветуйте пожалуйста!
Нужно написать парсер ( БНФ, ЕБНФ) , который бы разбирал строку, где пробел — терминальный символ
и выдавал бы

вход:
ABC D
выход:
A
AB
ABC

или

ABC D
-----
ABC
AB
A

у спирита что "не так" с левой рекурсией?
хотелось бы на спирите, потому что знаю. хотя приветствуется все
Можно ли это сделать на спирите?
Целевые языки C#,С++,С,Java — в порядке убывание важности
можно сюда pav@kzts.ru
Re: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: Цунцуяби Россия  
Дата: 21.11.06 06:21
Оценка:
Спасибо большое за помощь!
Подскажите еще, а вкладывается ли в ЕБНФ (БНФ)
то что я написал:

из входной строки "ABC" получить наборы строк

ABC,AB,A или A,AB,ABC

как это записать в нотации

s = s c | c ? но это соответствует s = c {c}

что даст только ABC

Подскажите ?
Re[2]: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: Graf Alex Украина http://grafalex.oberon.kiev.ua
Дата: 21.11.06 10:42
Оценка:
Здравствуйте, Цунцуяби, Вы писали:

Ц>Спасибо большое за помощь!

Ц>Подскажите еще, а вкладывается ли в ЕБНФ (БНФ)
Ц>то что я написал:

Ц>из входной строки "ABC" получить наборы строк


Ц> ABC,AB,A или A,AB,ABC


Ц>как это записать в нотации


Ц>s = s c | c ? но это соответствует s = c {c}


Ц>что даст только ABC


Ц>Подскажите ?

Еслия понял правильно, то это будет чтото в духе таком:
s : A (B (C)?)?
Re[2]: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: kig Россия  
Дата: 21.11.06 11:28
Оценка:
Здравствуйте, Цунцуяби, Вы писали:

Ц>Спасибо большое за помощь!

Ц>Подскажите еще, а вкладывается ли в ЕБНФ (БНФ)
Ц>то что я написал:

Ц>из входной строки "ABC" получить наборы строк


Ц> ABC,AB,A или A,AB,ABC


Ц>как это записать в нотации


Ц>s = s c | c ? но это соответствует s = c {c}


Ц>что даст только ABC


Ц>Подскажите ?


S = A [B] C].
Re[3]: EBNF >> !(boost/Spirit) >> *"может что еще?"
От: kig Россия  
Дата: 21.11.06 11:32
Оценка:
Здравствуйте, kig, Вы писали:


kig>S = A [B] C].


Поправка... перед B две открывающих скобки (RSDN одну ест )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.