Boost 的 Spirit 解析器框架入门

使用 Spirit 开发完备的语法

本节将讨论使用 Spirit 框架设计一组用户定义的语法规则。要设计自己的语法,Spirit 要求执行以下操作:

  1. 创建一个从预定义 grammar 类继承而来的派生类。grammar 类是一个模板类,被其派生类 DerivedT 和上下文类 ContextT 参数化。语法类的声明如下所示:
    template< typename DerivedT, typename ContextT = parser_context<> > struct grammar;
  2. 您设计的派生类必须有一个名为 definition(可以不修改此名)的嵌套的模板类/结构。definition 类有以下特性:
    • 它是类型名为 ScannerT 的模板类。
    • 语法规则在其构造函数中定义。构造函数被作为引用传递给实际的语法 self
    • 必须提供名为 start 的成员函数,它表示 start 规则。

清单 9 展示了用户定义语法的基本框架。


清单 9. 用户定义的语法类的基本框架
struct my-grammar : public grammar<my-grammar> { template <typename ScannerT> struct definition { rule<ScannerT> startRule; definition(my-grammar const& self) { /* define grammar rules here */ } rule<ScannerT> const& start() const { return startRule; } }; };



参考:

来自 Boost 的 Spirit 解析器框架入门

IBM Developer
Spirit 2.5.2 - 1.53.0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shinobi_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值