我正在通过编写一个解析器来解析 NAMS 使用的两种十六进制数变体来学习 Boost Spirit:
0x/0h或前缀h/ x。$and 的十六进制数字后必须跟一个十进制数字。这是我到目前为止和Coliru Session 提出的内容:
//#define BOOST_SPIRIT_X3_DEBUG
#include <iostream>
#include <boost/spirit/home/x3.hpp>
#include <boost/spirit/home/x3/support/ast/variant.hpp>
#include <boost/spirit/include/support_extended_variant.hpp>
namespace x3 = boost::spirit::x3;
namespace ast {
struct hex_data : std::string {};
struct pascal_hex_data : std::string {};
struct declared_data : boost::spirit::extended_variant<hex_data, pascal_hex_data>
{
declared_data () : base_type () { std::cout << "ctor default\n"; }
declared_data (hex_data const& rhs) : base_type (rhs) { std::cout << "ctor …Run Code Online (Sandbox Code Playgroud)