реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> использовал ли кто yacc, lexx в МК
SyncLair
сообщение Jan 10 2012, 20:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Здравствуйте, есть такие программы как построители программ лексических анализаторов, используются при проектировании компиляторов, трансляторов интерпретаторов и прочее.
Есть ли у кого опыт применения подобных вещей в МК?
Какова тут может быть сфера применения? Можете рассказать, поделиться примерами описания своих языков и грамматик.

Опыт у меня почти нулевой.

Хочу понять, можно ли такие вещи использовать в практике программирования МК, ну например для реализации парсинга каких-нибудь сетевых протоколов. Чем подкупает, на первый взгляд, данные программы тем, что можно описывать форматы данных сетевых пакетов, сообщений и быстро их менять. Ну например сегодня у Вас поле занимает два байта, а завтра три. Или была строка цифр только целочисленного числа, а теперь нужно чтобы число было с плавающей точкой.

Или вообще это жутко неэффективно и чаще всего посоветуете кодить по старинке.


--------------------
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Jan 11 2012, 05:25
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



Цитата(SyncLair @ Jan 10 2012, 23:14) *
Или вообще это жутко неэффективно и чаще всего посоветуете кодить по старинке.

Все "зависит от". Разбор бинарных протоколов лучше делать вручную, со всеми проверками на ошибки. Если речь идет о средней сложности командной строке, то разбор на лексемы можно описать на lex'e, но, как правило, это будет избыточным. И уж если требуется что-то совсем развесистое, с навороченным и регулярным синтаксисом, тогда конечно, lex/bison в помощь.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 11 2012, 07:01
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(SyncLair @ Jan 10 2012, 22:14) *
Хочу понять, можно ли такие вещи использовать в практике программирования МК, ну например для реализации парсинга каких-нибудь сетевых протоколов. Чем подкупает, на первый взгляд, данные программы тем, что можно описывать форматы данных сетевых пакетов, сообщений и быстро их менять. Ну например сегодня у Вас поле занимает два байта, а завтра три. Или была строка цифр только целочисленного числа, а теперь нужно чтобы число было с плавающей точкой.


Парсеры работают по жестким схемам задаваемым в нотациях типа BNF (Backus Naur Form).
Правильно построить и без смысловых ошибок такую детализированную схему это задача не легче чем в ручную распарсить протокол.
Потом сгенерированные парсеры будут очень медлительны.

Легче выбрать протокол из готовых универсальных.
Например на базе универсального описания синтаксиса данных ASN.1 c соответствующей кодировкой типа BER.
Парсер ASN.1 можно найти в бесплатных стеках протоколов TCP/IP в которых есть протокол SNMP.
Там уже предусмотрены все разумные типы данных: int, float, string, boolean ...
Хотя конечно будет избыточность из-за явной передачи типа данных. Но бинарное сжатие делает его не сильно заметным.
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Jan 11 2012, 09:23
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(AlexandrY @ Jan 11 2012, 11:01) *
Например на базе универсального описания синтаксиса данных ASN.1 c соответствующей кодировкой типа BER.
Парсер ASN.1 можно найти в бесплатных стеках протоколов TCP/IP в которых есть протокол SNMP.

Интересно -- посмотрим на эту штуку ASN спасибо.

Цитата(SyncLair @ Jan 11 2012, 00:14) *
Есть ли у кого опыт применения подобных вещей в МК?
Какова тут может быть сфера применения? Можете рассказать, поделиться примерами описания своих языков и грамматик.

Я так понимаю ни у кого опыта применения в сфере МК нет, видимо задачи не те.


--------------------
Go to the top of the page
 
+Quote Post
voidlizard
сообщение Feb 28 2012, 12:40
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 17-06-09
Пользователь №: 50 368



Цитата(SyncLair @ Jan 11 2012, 13:23) *
Интересно -- посмотрим на эту штуку ASN спасибо.


Я так понимаю ни у кого опыта применения в сфере МК нет, видимо задачи не те.


Я Ragel успешно использовал на MSP430 и STM32, вывод модема парсить, HTTP и проч. yacc/lexx, по моему, малоподходящий код для микроконтроллеров генерируют. Ragel вполне ок - компактно, быстро, никаких зависимостей.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016