设为首页 加入收藏

TOP

秘笈18 解析简单的输入(1)
2014-05-12 09:45:30 来源: 作者: 【 】 浏览:181
Tags:秘笈 解析 简单 输入

秘笈18 解析简单的输入(1)

解析一个小的文本是一项常见的任务。在这种情况下总会遇到一个难题:我们应该使用一些第三方专业解析工具如Bison或ANTLR,还是尝试使用C++和STL手工编写它?第三方工具善于处理复杂文本的解析,并且使用它们编写解析器很容易,但若要从它们的语法创建C++或C代码,还需要额外的工具,并将更多的依赖关系添加到你的项目。虽然手工编写的解析器通常是难以维护的,但它们只需要C++编译器。 

让我们从一个非常简单的任务开始,解析如下一个ISO格式的日期: 

以下是可能的输入的例子: 

让我们从地址http://www.ietf.org/rfc/rfc3339.txt来查看解析器的语法:

准备

需要熟悉占位符的概念或阅读了秘笈8和秘笈9。最好具备分析工具的基础知识。

做法

下面介绍一下Boost.Spirit库。它允许直接用C++代码的格式编写解析器(以及词法分析器和代码生成器),它是可以立即执行的(也就是说不需要额外的C++代码生成工具)。Boost.Spirit的语法与扩展巴科斯范式(Extended Backus-Naur Form, EBNF)非常接近,很多标准都用它来表达语法,并且其他流行的解析器都理解它。在本章开头的语法就是EBNF。

1. 需要包括以下头文件:

2. 现在制作一个date结构来保存解析出的数据:

3. 现在,让我们来查看解析器(下一节将一步一步地描述它是如何工作的) :

4. 现在,可以在任何地方使用这个解析器:
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇秘笈17 强制转换多态对象 下一篇秘笈18 解析简单的输入(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)