我想知道解析字符串的最有效方法是HTTP,FTP,SMTP,IMAP,IRC等协议,通过向服务器发送信息和读取响应来完成通信。
例如,假设我想解析典型的IRC消息。
PING irc.example.com
我现在正在做的是将响应字符串分成标记,并迭代它们。如果令牌是“PING”,我的程序会调用pong函数。但是,目前,“解析”这些字符串仅仅包含一堆strcmp()s。
我很好奇任何替代的,更有效的'解析'数据的方式(我正在考虑像令牌的地图,所以我的程序可以很容易地查找它。)
答案 0 :(得分:0)
为其定义语法,或者只是创建一个检测令牌的自动机。 this帖子中的示例。
答案 1 :(得分:0)
根据您想要支持的数量,您可以选择一些选项。在第一级是像你正在做的那样简单的标记化。这仅适用于非常有限的一组命令。接下来你有正则表达式,可以给你更多的灵活性。最后,你有一个完整的语法建议,这将允许最大的灵活性。
每一项的复杂程度都比上一次大。