解析字符串/标记

Parsing Strings/Tokens

本文关键字:标记 字符串      更新时间:2023-10-16

我想知道对于HTTP,FTP,SMTP,IMAP,IRC等协议,最有效的字符串解析方式是什么,在这些协议中,通信是通过向服务器发送信息并读取响应来完成的。

例如,假设我想解析一个典型的 IRC 消息。

    PING irc.example.com

我现在正在做的是将响应字符串划分为标记,并遍历它们。如果令牌是"PING",我的程序将调用 pong 函数。但是,目前,"解析"这些字符串仅由一堆strcmp()组成。

我很好奇任何替代的、更有效的"解析"数据的方法(我在想像令牌地图这样的东西,所以我的程序可以轻松查找它)。

为它定义一个语法,或者简单地创建一个自动机来检测你的令牌。这篇文章中的例子。

根据您想要支持的程度,您有几个选择。在第一级是简单的标记化,就像你正在做的事情一样。这仅适用于一组非常有限的命令。接下来,你有正则表达式,这可能会给你更多的灵活性。最后,您已经按照建议获得了完整的语法,这将允许最大的灵活性。

其中每一个的复杂性都比上一个更大。