Update of /cvsroot/boost/boost/boost/xpressive/detail/dynamic
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv23603/boost/xpressive/detail/dynamic
Modified Files:
parser_enum.hpp parser_traits.hpp
Log Message:
named captures for dynamic regexes, doxygen comments
Index: parser_enum.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/xpressive/detail/dynamic/parser_enum.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- parser_enum.hpp 5 Mar 2007 02:56:28 -0000 1.3
+++ parser_enum.hpp 7 May 2007 04:41:25 -0000 1.4
@@ -49,6 +49,8 @@
token_recurse, // ?R
token_rule_assign, // ?$[name]=
token_rule_ref, // ?$[name]
+ token_named_mark, // ?P<name>
+ token_named_mark_ref, // ?P=name
token_assert_begin_sequence, // \A
token_assert_end_sequence, // \Z
Index: parser_traits.hpp
===================================================================
RCS file:
/cvsroot/boost/boost/boost/xpressive/detail/dynamic/parser_traits.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- parser_traits.hpp 13 Mar 2007 06:41:51 -0000 1.7
+++ parser_traits.hpp 7 May 2007 04:41:25 -0000 1.8
@@ -231,13 +231,8 @@
case BOOST_XPR_CHAR_(char_type, '!'): ++begin; return
token_negative_lookahead;
case BOOST_XPR_CHAR_(char_type, 'R'): ++begin; return
token_recurse;
case BOOST_XPR_CHAR_(char_type, '$'):
- this->eat_ws_(++begin, end);
- for( name.clear(); begin != end &&
this->traits().isctype(*begin, this->alnum_); ++begin)
- {
- name.push_back(*begin);
- }
- this->eat_ws_(begin, end);
- detail::ensure(begin != end && !name.empty(), error_paren,
"incomplete extension");
+ this->get_name_(++begin, end, name);
+ detail::ensure(begin != end, error_paren, "incomplete
extension");
if(BOOST_XPR_CHAR_(char_type, '=') == *begin)
{
++begin;
@@ -256,6 +251,23 @@
throw regex_error(error_badbrace, "unrecognized
extension");
}
+ case BOOST_XPR_CHAR_(char_type, 'P'):
+ this->eat_ws_(++begin, end);
+ detail::ensure(begin != end, error_paren, "incomplete
extension");
+ switch(*begin)
+ {
+ case BOOST_XPR_CHAR_(char_type, '<'):
+ this->get_name_(++begin, end, name);
+ detail::ensure(begin != end && BOOST_XPR_CHAR_(char_type,
'>') == *begin++, error_paren, "incomplete extension");
+ return token_named_mark;
+ case BOOST_XPR_CHAR_(char_type, '='):
+ this->get_name_(++begin, end, name);
+ detail::ensure(begin != end, error_paren, "incomplete
extension");
+ return token_named_mark_ref;
+ default:
+ throw regex_error(error_badbrace, "unrecognized
extension");
+ }
+
case BOOST_XPR_CHAR_(char_type, 'i'):
case BOOST_XPR_CHAR_(char_type, 'm'):
case BOOST_XPR_CHAR_(char_type, 's'):
@@ -389,6 +401,26 @@
return this->traits().isctype(ch, this->space_);
}
+ ///////////////////////////////////////////////////////////////////////////
+ // is_alnum_
+ bool is_alnum_(char_type ch) const
+ {
+ return this->traits().isctype(ch, this->alnum_);
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // get_name_
+ void get_name_(iterator_type &begin, iterator_type end, string_type &name)
+ {
+ this->eat_ws_(begin, end);
+ for(name.clear(); begin != end && this->is_alnum_(*begin); ++begin)
+ {
+ name.push_back(*begin);
+ }
+ this->eat_ws_(begin, end);
+ detail::ensure(!name.empty(), regex_constants::error_paren,
"incomplete extension");
+ }
+
///////////////////////////////////////////////////////////////////////////////
// eat_ws_
iterator_type &eat_ws_(iterator_type &begin, iterator_type end)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs