Разбор строк / токенов - PullRequest
0 голосов
/ 08 мая 2011

Мне было интересно, какой самый эффективный способ синтаксического анализа строк был бы для протоколов, таких как HTTP, FTP, SMTP, IMAP, IRC и т. Д., Где связь осуществляется путем отправки информации на сервер и чтения ответа.

Например, допустим, я хотел бы проанализировать типичное сообщение IRC.

    PING irc.example.com

Сейчас я делаю строку ответа на токены и выполняю их итерацию.Если токен «PING», моя программа вызывает функцию pong.Тем не менее, на данный момент «синтаксический анализ» этих строк просто состоит из набора функций strcmp ().

Мне любопытны любые альтернативные, более эффективные способы «анализа» данных (я думал, что-то вродеКарта для токенов, чтобы моя программа могла легко ее найти).

Ответы [ 2 ]

0 голосов
/ 08 мая 2011

В зависимости от того, сколько вы хотите поддержать, у вас есть несколько вариантов.На первом уровне простой токенинг, как то, что вы делаете.Это работает только для очень ограниченного набора команд.Далее у вас есть регулярные выражения, которые могут дать вам больше гибкости.Наконец, у вас есть полноценная грамматика в соответствии с предложением, которая обеспечит максимальную гибкость.

Сложность каждого из них больше, чем предыдущего.

0 голосов
/ 08 мая 2011

Определите для нее грамматику или просто создайте автомат, который обнаружит ваши токены.Пример в этом посте.

...