使用解析器生成器我想为电子邮件消息中的“发件人”创建一个解析器。以下是 From 标头的示例:
From: "John Doe" <john@doe.org>
我认为为此实现解析器将很简单。
然而,“From header”语法有一个复杂的地方:注释可以插入到几乎任何地方。例如,可以在 "john" 中插入注释:
From: "John Doe" <jo(this is a comment)hn@doe.org>
并且可以在许多其他地方插入评论。
如何处理这种并发症?它是否需要“2-pass”解析器:第一次删除所有注释,第二次为 From 标头创建解析树?现代解析器生成器是否支持输入的多次传递?可以一次性解析吗?如果是的话,你会画出这个方法吗?