fipa_acl  1.4
Public Member Functions | Public Attributes | List of all members
BinExpression< Iterator > Struct Template Reference

#include <grammar_bitefficient.h>

Inherits grammar< Iterator, std::string()>.

Public Member Functions

 BinExpression ()
 

Public Attributes

qi::rule< Iterator, std::string()> bin_expression_rule
 
BinNumber< Iterator > binNumber
 
BinWord< Iterator > binWord
 
Word< Iterator > word
 
Index< Iterator > index
 
Digits< Iterator > digits
 
BinString< Iterator > binString
 
BinDateTime< Iterator > binDateTime
 
qi::rule< Iterator, std::string() > binExpr
 
qi::rule< Iterator,
std::string(), qi::locals
< boost::uint_least32_t > > 
exprStart
 
qi::rule< Iterator,
std::string(), qi::locals
< boost::uint_least32_t > > 
exprEnd
 
qi::rule< Iterator,
std::vector< unsigned char >
boost::uint32_t) > 
byteSeq
 
Len8< Iterator > len8
 
Len16< Iterator > len16
 
Len32< Iterator > len32
 
qi::rule< Iterator,
fipa::acl::ByteSequence(boost::uint32_t) > 
fipaString
 
StringLiteral< Iterator > stringLiteral
 
qi::rule< Iterator,
fipa::acl::ByteSequence() > 
stringLiteralTerminated
 
qi::rule< Iterator, std::string() > byteLengthEncodedStringHeader
 
qi::rule< Iterator,
fipa::acl::ByteSequence(boost::uint32_t) > 
byteLengthEncodedString
 
ByteLengthEncodedStringTerminated
< Iterator > 
byteLengthEncodedStringTerminated
 
CodedNumber< Iterator > codedNumber
 

Detailed Description

template<typename Iterator>
struct BinExpression< Iterator >

Definition at line 243 of file grammar_bitefficient.h.

Constructor & Destructor Documentation

template<typename Iterator >
BinExpression< Iterator >::BinExpression ( )
inline

Definition at line 245 of file grammar_bitefficient.h.

245  : BinExpression::base_type(bin_expression_rule, "BinExpression-bitefficient_grammar")
246  {
247  using qi::on_error;
248  using qi::fail;
249  using phoenix::construct;
250  using phoenix::val;
251 
252  // Inbuild parser:
253  // Encoding is ASCII here
254  using encoding::char_;
255  using encoding::string;
256  using encoding::digit;
257  using encoding::alpha;
258  using qi::byte_;
259 
260  bin_expression_rule = binExpr [ label::_val = label::_1 ]
261  | byte_(0xFF) >> binString [ label::_val = convertToString(label::_1) ]
262  ;
263  binExpr = binWord [ label::_val = label::_1 ]
264  | binString [ label::_val = convertToString(label::_1) ]
265  | binNumber [ label::_val = label::_1 ]
266  // Every expression can look like the following of "(+ (-1 2) 3)"
267  | (exprStart [ label::_val = "(" , label::_val += label::_1 ]
268  >> *binExpr [ label::_val += label::_1 ]
269  >> exprEnd [ label::_val += ")", label::_val += label::_1 ]
270  )
271  ;
272 
273  exprStart = ( byte_(0x60) ) [ label::_val = "" ]
274  | ( byte_(0x70) >> word [ label::_val = label::_1 ]
275  >> byte_(0x00) )
276  | ( byte_(0x71) >> index [ label::_val = extractFromCodetable(label::_1)] )
277  | ( byte_(0x72) >> digits [ label::_val = label::_1 ] )
278  | ( byte_(0x73) >> digits [ label::_val = label::_1 ] )
279  | ( byte_(0x74) >> ( stringLiteralTerminated
280  | byteLengthEncodedStringTerminated ) [ label::_val = convertToString(label::_1) ] )
281  | ( byte_(0x75) >> index [ label::_val = extractFromCodetable(label::_1)])
282  | ( byte_(0x76) >> len8 [ label::_a = label::_1 ]
283  >> fipaString(label::_a) [ label::_val = convertToString(label::_1) ])
284  | ( byte_(0x77) >> len16 [ label::_a = label::_1 ]
285  >> fipaString(label::_a) [ label::_val = convertToString(label::_1) ])
286  | ( byte_(0x78) >> len32 [ label::_a = label::_1 ]
287  >> fipaString(label::_a) [ label::_val = convertToString(label::_1) ])
288  | ( byte_(0x79) >> index [ label::_val = extractFromCodetable(label::_1)])
289  ;
290 
291  exprEnd = ( byte_(0x40) ) [ label::_val = "" ]
292  | ( byte_(0x50) >> word [ label::_val = label::_1 ]
293  >> byte_(0x00) )
294  | ( byte_(0x51) >> index [ label::_val = extractFromCodetable(label::_1)])
295  | ( byte_(0x52) >> digits [ label::_val = label::_1 ] )
296  | ( byte_(0x53) >> digits [ label::_val = label::_1 ] )
297  | ( byte_(0x54) >> ( stringLiteralTerminated
298  | byteLengthEncodedStringTerminated ) [ label::_val = convertToString(label::_1) ])
299  | ( byte_(0x55) >> index [ label::_val = extractFromCodetable(label::_1)])
300  | ( byte_(0x56) >> len8 [ label::_a = label::_1 ]
301  >> fipaString(label::_a) [ label::_val = convertToString(label::_1)] )
302  | ( byte_(0x57) >> len16 [ label::_a = label::_1 ]
303  >> fipaString(label::_a) [ label::_val = convertToString(label::_1)])
304  | ( byte_(0x58) >> len32 [ label::_a = label::_1 ]
305  >> fipaString(label::_a) [ label::_val = convertToString(label::_1)])
306  | ( byte_(0x59) >> index [ label::_val = extractFromCodetable(label::_1)])
307  ;
308 
309 
310  // pass the local length variable down to the rule using parent rules variable _r1
312 
313  byteLengthEncodedStringHeader = char_('#')
314  >> + digit [ label::_val += label::_1 ]
315  >> char_('"')
316  ;
317 
318  // Digits tell the byte encoding
319  // label::_r1 is an inherited local variable from the parent rule
320  byteLengthEncodedString = byteLengthEncodedStringHeader [ phoenix::at_c<0>(label::_val) += label::_1 ]
321  >> qi::repeat(label::_r1)[byte_] [ phoenix::at_c<2>(label::_val) = convertToString(label::_1) ]
322  ;
323 
324  #ifdef BOOST_SPIRIT_DEBUG
325  BOOST_SPIRIT_DEBUG_NODE(bin_expression_rule);
327  #endif
328  }
qi::rule< Iterator, std::string(), qi::locals< boost::uint_least32_t > > exprEnd
qi::rule< Iterator, std::string() > binExpr
Digits< Iterator > digits
qi::rule< Iterator, std::string(), qi::locals< boost::uint_least32_t > > exprStart
qi::rule< Iterator, fipa::acl::ByteSequence() > stringLiteralTerminated
Word< Iterator > word
Len32< Iterator > len32
qi::rule< Iterator, fipa::acl::ByteSequence(boost::uint32_t) > fipaString
Len16< Iterator > len16
Index< Iterator > index
StringLiteral< Iterator > stringLiteral
ByteLengthEncodedStringTerminated< Iterator > byteLengthEncodedStringTerminated
BinString< Iterator > binString
qi::rule< Iterator, fipa::acl::ByteSequence(boost::uint32_t) > byteLengthEncodedString
phoenix::function< extractFromCodetableImpl > extractFromCodetable
#define FIPA_DEBUG_RULE(X)
BinWord< Iterator > binWord
BinNumber< Iterator > binNumber
Len8< Iterator > len8
qi::rule< Iterator, std::string() > byteLengthEncodedStringHeader
qi::rule< Iterator, std::string()> bin_expression_rule
phoenix::function< convertToStringImpl > convertToString

Member Data Documentation

template<typename Iterator >
qi::rule<Iterator, std::string()> BinExpression< Iterator >::bin_expression_rule

Definition at line 331 of file grammar_bitefficient.h.

template<typename Iterator >
BinDateTime<Iterator> BinExpression< Iterator >::binDateTime

Definition at line 341 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string() > BinExpression< Iterator >::binExpr

Definition at line 342 of file grammar_bitefficient.h.

template<typename Iterator >
BinNumber<Iterator> BinExpression< Iterator >::binNumber

Definition at line 333 of file grammar_bitefficient.h.

template<typename Iterator >
BinString<Iterator> BinExpression< Iterator >::binString

Definition at line 339 of file grammar_bitefficient.h.

template<typename Iterator >
BinWord<Iterator> BinExpression< Iterator >::binWord

Definition at line 334 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::ByteSequence(boost::uint32_t) > BinExpression< Iterator >::byteLengthEncodedString

Definition at line 357 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string() > BinExpression< Iterator >::byteLengthEncodedStringHeader

Definition at line 356 of file grammar_bitefficient.h.

template<typename Iterator >
ByteLengthEncodedStringTerminated<Iterator> BinExpression< Iterator >::byteLengthEncodedStringTerminated

Definition at line 358 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::vector<unsigned char>boost::uint32_t) > BinExpression< Iterator >::byteSeq

Definition at line 348 of file grammar_bitefficient.h.

template<typename Iterator >
CodedNumber<Iterator> BinExpression< Iterator >::codedNumber

Definition at line 359 of file grammar_bitefficient.h.

template<typename Iterator >
Digits<Iterator> BinExpression< Iterator >::digits

Definition at line 338 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string(), qi::locals<boost::uint_least32_t> > BinExpression< Iterator >::exprEnd

Definition at line 344 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string(), qi::locals<boost::uint_least32_t> > BinExpression< Iterator >::exprStart

Definition at line 343 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::ByteSequence(boost::uint32_t) > BinExpression< Iterator >::fipaString

Definition at line 353 of file grammar_bitefficient.h.

template<typename Iterator >
Index<Iterator> BinExpression< Iterator >::index

Definition at line 336 of file grammar_bitefficient.h.

template<typename Iterator >
Len16<Iterator> BinExpression< Iterator >::len16

Definition at line 350 of file grammar_bitefficient.h.

template<typename Iterator >
Len32<Iterator> BinExpression< Iterator >::len32

Definition at line 351 of file grammar_bitefficient.h.

template<typename Iterator >
Len8<Iterator> BinExpression< Iterator >::len8

Definition at line 349 of file grammar_bitefficient.h.

template<typename Iterator >
StringLiteral<Iterator> BinExpression< Iterator >::stringLiteral

Definition at line 354 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::ByteSequence() > BinExpression< Iterator >::stringLiteralTerminated

Definition at line 355 of file grammar_bitefficient.h.

template<typename Iterator >
Word<Iterator> BinExpression< Iterator >::word

Definition at line 335 of file grammar_bitefficient.h.


The documentation for this struct was generated from the following file: