|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r52185 - trunk/boost/spirit/home/support/detail/lexer
From: jamin.hanson_at_[hidden]
Date: 2009-04-05 08:19:52
Author: ben_hanson
Date: 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
New Revision: 52185
URL: http://svn.boost.org/trac/boost/changeset/52185
Log:
Copyright date update
Text files modified:
trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp | 2
trunk/boost/spirit/home/support/detail/lexer/consts.hpp | 4
trunk/boost/spirit/home/support/detail/lexer/debug.hpp | 190 ++++++++++++++++++++++++----------------
trunk/boost/spirit/home/support/detail/lexer/file_input.hpp | 28 +++--
trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp | 12 +
trunk/boost/spirit/home/support/detail/lexer/input.hpp | 51 +++++-----
trunk/boost/spirit/home/support/detail/lexer/rules.hpp | 22 ++++
trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp | 2
trunk/boost/spirit/home/support/detail/lexer/size_t.hpp | 2
trunk/boost/spirit/home/support/detail/lexer/string_token.hpp | 2
10 files changed, 188 insertions(+), 127 deletions(-)
Modified: trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// char_traits.hpp
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/boost/spirit/home/support/detail/lexer/consts.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/consts.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/consts.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// consts.h
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -20,7 +20,7 @@
enum {end_state_index, id_index, state_index, bol_index, eol_index,
dead_state_index, dfa_offset};
- const std::size_t max_macro_len = 20;
+ const std::size_t max_macro_len = 30;
const std::size_t num_chars = 256;
const std::size_t num_wchar_ts =
(boost::integer_traits<wchar_t>::const_max < 0x110000) ?
Modified: trunk/boost/spirit/home/support/detail/lexer/debug.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/debug.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/debug.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// debug.hpp
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -8,6 +8,7 @@
#include <map>
#include <ostream>
+#include "rules.hpp"
#include "size_t.hpp"
#include "state_machine.hpp"
#include "string_token.hpp"
@@ -112,6 +113,24 @@
}
}
+ static void dump (const basic_state_machine<CharT> &state_machine_,
+ basic_rules<CharT> &rules_, ostream &stream_)
+ {
+ typename basic_state_machine<CharT>::iterator iter_ =
+ state_machine_.begin ();
+ typename basic_state_machine<CharT>::iterator end_ =
+ state_machine_.end ();
+
+ for (std::size_t dfa_ = 0, dfas_ = state_machine_.size ();
+ dfa_ < dfas_; ++dfa_)
+ {
+ lexer_state (stream_);
+ stream_ << rules_.state (dfa_) << std::endl << std::endl;
+
+ dump_ex (iter_, stream_);
+ }
+ }
+
static void dump (const basic_state_machine<CharT> &state_machine_, ostream &stream_)
{
typename basic_state_machine<CharT>::iterator iter_ =
@@ -122,173 +141,192 @@
for (std::size_t dfa_ = 0, dfas_ = state_machine_.size ();
dfa_ < dfas_; ++dfa_)
{
- const std::size_t states_ = iter_->states;
+ lexer_state (stream_);
+ stream_ << dfa_ << std::endl << std::endl;
- for (std::size_t i_ = 0; i_ < states_; ++i_)
+ dump_ex (iter_, stream_);
+ }
+ }
+
+protected:
+ typedef std::basic_stringstream<CharT> stringstream;
+
+ static void dump_ex (typename basic_state_machine<CharT>::iterator &iter_,
+ ostream &stream_)
+ {
+ const std::size_t states_ = iter_->states;
+
+ for (std::size_t i_ = 0; i_ < states_; ++i_)
+ {
+ state (stream_);
+ stream_ << i_ << std::endl;
+
+ if (iter_->end_state)
{
- state (stream_);
- stream_ << i_ << std::endl;
+ end_state (stream_);
+ stream_ << iter_->id;
+ dfa (stream_);
+ stream_ << iter_->goto_dfa;
+ stream_ << std::endl;
+ }
- if (iter_->end_state)
- {
- end_state (stream_);
- stream_ << iter_->id;
- dfa (stream_);
- stream_ << iter_->goto_dfa;
- stream_ << std::endl;
- }
+ if (iter_->bol_index != npos)
+ {
+ bol (stream_);
+ stream_ << iter_->bol_index << std::endl;
+ }
- if (iter_->bol_index != npos)
- {
- bol (stream_);
- stream_ << iter_->bol_index << std::endl;
- }
+ if (iter_->eol_index != npos)
+ {
+ eol (stream_);
+ stream_ << iter_->eol_index << std::endl;
+ }
- if (iter_->eol_index != npos)
- {
- eol (stream_);
- stream_ << iter_->eol_index << std::endl;
- }
+ const std::size_t transitions_ = iter_->transitions;
+
+ if (transitions_ == 0)
+ {
+ ++iter_;
+ }
- const std::size_t transitions_ = iter_->transitions;
+ for (std::size_t t_ = 0; t_ < transitions_; ++t_)
+ {
+ std::size_t goto_state_ = iter_->goto_state;
- if (transitions_ == 0)
+ if (iter_->token.any ())
{
- ++iter_;
+ any (stream_);
}
-
- for (std::size_t t_ = 0; t_ < transitions_; ++t_)
+ else
{
- std::size_t goto_state_ = iter_->goto_state;
+ open_bracket (stream_);
- if (iter_->token.any ())
+ if (iter_->token._negated)
{
- any (stream_);
+ negated (stream_);
}
- else
- {
- open_bracket (stream_);
- if (iter_->token._negated)
- {
- negated (stream_);
- }
-
- string charset_;
- CharT c_ = 0;
-
- escape_control_chars (iter_->token._charset,
- charset_);
- c_ = *charset_.c_str ();
-
- if (!iter_->token._negated &&
- (c_ == '^' || c_ == ']'))
- {
- stream_ << '\\';
- }
+ string charset_;
+ CharT c_ = 0;
- stream_ << charset_;
- close_bracket (stream_);
+ escape_control_chars (iter_->token._charset,
+ charset_);
+ c_ = *charset_.c_str ();
+
+ if (!iter_->token._negated &&
+ (c_ == '^' || c_ == ']'))
+ {
+ stream_ << '\\';
}
- stream_ << goto_state_ << std::endl;
- ++iter_;
+ stream_ << charset_;
+ close_bracket (stream_);
}
- stream_ << std::endl;
+ stream_ << goto_state_ << std::endl;
+ ++iter_;
}
+
+ stream_ << std::endl;
}
}
-protected:
- typedef std::basic_stringstream<CharT> stringstream;
+ static void lexer_state (std::ostream &stream_)
+ {
+ stream_ << "Lexer state: ";
+ }
+
+ static void lexer_state (std::wostream &stream_)
+ {
+ stream_ << L"Lexer state: ";
+ }
- static void state (std::basic_ostream<char> &stream_)
+ static void state (std::ostream &stream_)
{
stream_ << "State: ";
}
- static void state (std::basic_ostream<wchar_t> &stream_)
+ static void state (std::wostream &stream_)
{
stream_ << L"State: ";
}
- static void bol (std::basic_ostream<char> &stream_)
+ static void bol (std::ostream &stream_)
{
stream_ << " BOL -> ";
}
- static void bol (std::basic_ostream<wchar_t> &stream_)
+ static void bol (std::wostream &stream_)
{
stream_ << L" BOL -> ";
}
- static void eol (std::basic_ostream<char> &stream_)
+ static void eol (std::ostream &stream_)
{
stream_ << " EOL -> ";
}
- static void eol (std::basic_ostream<wchar_t> &stream_)
+ static void eol (std::wostream &stream_)
{
stream_ << L" EOL -> ";
}
- static void end_state (std::basic_ostream<char> &stream_)
+ static void end_state (std::ostream &stream_)
{
stream_ << " END STATE, Id = ";
}
- static void end_state (std::basic_ostream<wchar_t> &stream_)
+ static void end_state (std::wostream &stream_)
{
stream_ << L" END STATE, Id = ";
}
- static void any (std::basic_ostream<char> &stream_)
+ static void any (std::ostream &stream_)
{
stream_ << " . -> ";
}
- static void any (std::basic_ostream<wchar_t> &stream_)
+ static void any (std::wostream &stream_)
{
stream_ << L" . -> ";
}
- static void open_bracket (std::basic_ostream<char> &stream_)
+ static void open_bracket (std::ostream &stream_)
{
stream_ << " [";
}
- static void open_bracket (std::basic_ostream<wchar_t> &stream_)
+ static void open_bracket (std::wostream &stream_)
{
stream_ << L" [";
}
- static void negated (std::basic_ostream<char> &stream_)
+ static void negated (std::ostream &stream_)
{
stream_ << "^";
}
- static void negated (std::basic_ostream<wchar_t> &stream_)
+ static void negated (std::wostream &stream_)
{
stream_ << L"^";
}
- static void close_bracket (std::basic_ostream<char> &stream_)
+ static void close_bracket (std::ostream &stream_)
{
stream_ << "] -> ";
}
- static void close_bracket (std::basic_ostream<wchar_t> &stream_)
+ static void close_bracket (std::wostream &stream_)
{
stream_ << L"] -> ";
}
- static void dfa (std::basic_ostream<char> &stream_)
+ static void dfa (std::ostream &stream_)
{
stream_ << ", dfa = ";
}
- static void dfa (std::basic_ostream<wchar_t> &stream_)
+ static void dfa (std::wostream &stream_)
{
stream_ << L", dfa = ";
}
Modified: trunk/boost/spirit/home/support/detail/lexer/file_input.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/file_input.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/file_input.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// file_input.hpp
-// Copyright (c) 2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -96,19 +96,21 @@
void next_token ()
{
+ const detail::internals &internals_ = _input->_state_machine->data ();
+
_data.start = _data.end;
- if (_input->_state_machine->_dfa->size () == 1)
+ if (internals_._dfa->size () == 1)
{
- _data.id = _input->next (&_input->_state_machine->_lookup->
- front ()->front (), _input->_state_machine->_dfa_alphabet.
- front (), &_input->_state_machine->_dfa->front ()->
- front (), _data.start, _data.end);
+ _data.id = _input->next (&internals_._lookup->front ()->
+ front (), internals_._dfa_alphabet.front (),
+ &internals_._dfa->front ()->front (), _data.start,
+ _data.end);
}
else
{
- _data.id = _input->next (*_input->_state_machine, _data.state,
- _data.start, _data.end);
+ _data.id = _input->next (internals_, _data.state, _data.start,
+ _data.end);
}
if (_data.id == 0)
@@ -197,16 +199,16 @@
const CharT *_end_token;
CharT *_end_buffer;
- std::size_t next (const basic_state_machine<CharT> &state_machine_,
+ std::size_t next (const detail::internals &internals_,
std::size_t &start_state_, const CharT * &start_, const CharT * &end_)
{
_start_token = _end_token;
again:
- const std::size_t * lookup_ = &state_machine_._lookup[start_state_]->
+ const std::size_t * lookup_ = &internals_._lookup[start_state_]->
front ();
- std::size_t dfa_alphabet_ = state_machine_._dfa_alphabet[start_state_];
- const std::size_t *dfa_ = &state_machine_._dfa[start_state_]->front ();
+ std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_];
+ const std::size_t *dfa_ = &internals_._dfa[start_state_]->front ();
const std::size_t *ptr_ = dfa_ + dfa_alphabet_;
const CharT *curr_ = _start_token;
bool end_state_ = *ptr_ != 0;
@@ -416,9 +418,9 @@
else if (_start_token < _end_buffer)
{
const std::size_t len_ = _end_buffer - _start_token;
+ // Some systems have memcpy in namespace std.
using namespace std;
- // Some systems have memcpy in namespace std.
memcpy (_start_buffer, _start_token - 1, (len_ + 1) * sizeof (CharT));
_stream->read (_start_buffer + len_ + 1,
static_cast<std::streamsize> (_buffer.size () - len_ - 1));
Modified: trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// generate_cpp_code.hpp
-// Copyright (c) 2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -8,6 +8,7 @@
#include "char_traits.hpp"
#include "consts.hpp"
+#include "internals.hpp"
#include <iostream>
#include <boost/detail/iterator.hpp>
#include "runtime_error.hpp"
@@ -20,10 +21,13 @@
namespace lexer
{
template<typename CharT>
-void generate_cpp (const basic_state_machine<CharT> &sm_, std::ostream &os_,
- const bool use_pointers_ = false, const bool skip_unknown_ = true,
- const bool optimise_parameters_ = true, const char *name_ = "next_token")
+void generate_cpp (const basic_state_machine<CharT> &state_machine_,
+ std::ostream &os_, const bool use_pointers_ = false,
+ const bool skip_unknown_ = true, const bool optimise_parameters_ = true,
+ const char *name_ = "next_token")
{
+ const detail::internals &sm_ = state_machine_.data ();
+
if (sm_._lookup->size () == 0)
{
throw runtime_error ("Cannot generate code from an empty state machine");
Modified: trunk/boost/spirit/home/support/detail/lexer/input.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/input.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/input.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// input.hpp
-// Copyright (c) 2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -7,7 +7,7 @@
#define BOOST_LEXER_INPUT
#include "char_traits.hpp"
-#include <iterator>
+#include <boost/detail/iterator.hpp>
#include "size_t.hpp"
#include "state_machine.hpp"
@@ -102,38 +102,39 @@
void next_token ()
{
+ const detail::internals &internals_ = _input->_state_machine->data ();
+
_data.start = _data.end;
- if (_input->_state_machine->_dfa->size () == 1)
+ if (internals_._dfa->size () == 1)
{
- if (_input->_state_machine->_seen_BOL_assertion ||
- _input->_state_machine->_seen_EOL_assertion)
+ if (internals_._seen_BOL_assertion ||
+ internals_._seen_EOL_assertion)
{
_data.id = next
- (&_input->_state_machine->_lookup->front ()->front (),
- _input->_state_machine->_dfa_alphabet.front (),
- &_input->_state_machine->_dfa->front ()->front (),
+ (&internals_._lookup->front ()->front (),
+ internals_._dfa_alphabet.front (),
+ &internals_._dfa->front ()->front (),
_data.bol, _data.end, _input->_end);
}
else
{
- _data.id = next (&_input->_state_machine->_lookup->
- front ()->front (), _input->_state_machine->
- _dfa_alphabet.front (), &_input->_state_machine->
+ _data.id = next (&internals_._lookup->front ()->front (),
+ internals_._dfa_alphabet.front (), &internals_.
_dfa->front ()->front (), _data.end, _input->_end);
}
}
else
{
- if (_input->_state_machine->_seen_BOL_assertion ||
- _input->_state_machine->_seen_EOL_assertion)
+ if (internals_._seen_BOL_assertion ||
+ internals_._seen_EOL_assertion)
{
- _data.id = next (*_input->_state_machine, _data.state,
+ _data.id = next (internals_, _data.state,
_data.bol, _data.end, _input->_end);
}
else
{
- _data.id = next (*_input->_state_machine, _data.state,
+ _data.id = next (internals_, _data.state,
_data.end, _input->_end);
}
}
@@ -145,18 +146,17 @@
}
}
- std::size_t next (const basic_state_machine
- <typename Traits::char_type> &state_machine_,
+ std::size_t next (const detail::internals &internals_,
std::size_t &start_state_, bool bol_,
FwdIter &start_token_, const FwdIter &end_)
{
if (start_token_ == end_) return 0;
again:
- const std::size_t * lookup_ = &state_machine_._lookup[start_state_]->
+ const std::size_t * lookup_ = &internals_._lookup[start_state_]->
front ();
- std::size_t dfa_alphabet_ = state_machine_._dfa_alphabet[start_state_];
- const std::size_t *dfa_ = &state_machine_._dfa[start_state_]->front ();
+ std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_];
+ const std::size_t *dfa_ = &internals_._dfa[start_state_]->front ();
const std::size_t *ptr_ = dfa_ + dfa_alphabet_;
FwdIter curr_ = start_token_;
bool end_state_ = *ptr_ != 0;
@@ -244,18 +244,17 @@
return id_;
}
- std::size_t next (const basic_state_machine
- <typename Traits::char_type> &state_machine_,
+ std::size_t next (const detail::internals &internals_,
std::size_t &start_state_, FwdIter &start_token_,
FwdIter const &end_)
{
if (start_token_ == end_) return 0;
again:
- const std::size_t * lookup_ = &state_machine_._lookup[start_state_]->
+ const std::size_t * lookup_ = &internals_._lookup[start_state_]->
front ();
- std::size_t dfa_alphabet_ = state_machine_._dfa_alphabet[start_state_];
- const std::size_t *dfa_ = &state_machine_._dfa[start_state_]->front ();
+ std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_];
+ const std::size_t *dfa_ = &internals_._dfa[start_state_]->front ();
const std::size_t *ptr_ = dfa_ + dfa_alphabet_;
FwdIter curr_ = start_token_;
bool end_state_ = *ptr_ != 0;
@@ -456,7 +455,7 @@
iter_._data.id = npos;
iter_._data.start = _begin;
iter_._data.end = _begin;
- iter_._data.bol = _state_machine->_seen_BOL_assertion;
+ iter_._data.bol = _state_machine->data ()._seen_BOL_assertion;
iter_._data.state = 0;
++iter_;
return iter_;
Modified: trunk/boost/spirit/home/support/detail/lexer/rules.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/rules.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/rules.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// rules.hpp
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -129,6 +129,18 @@
return state_;
}
+ const CharT *state (const std::size_t index_) const
+ {
+ if (index_ == 0)
+ {
+ return initial ();
+ }
+ else
+ {
+ return _lexer_state_names[index_ - 1].c_str ();
+ }
+ }
+
void add_state (const CharT *name_)
{
validate (name_);
@@ -139,6 +151,11 @@
_regexes.push_back (string_deque ());
_ids.push_back (id_vector ());
_states.push_back (id_vector ());
+
+ if (string (name_) != initial ())
+ {
+ _lexer_state_names.push_back (name_);
+ }
}
}
@@ -320,6 +337,7 @@
id_vector_deque _states;
regex_flags _flags;
std::locale _locale;
+ string_deque _lexer_state_names;
void add (const CharT *curr_state_, const string ®ex_,
const std::size_t id_, const CharT *new_state_, const bool check_)
@@ -403,7 +421,7 @@
std::ostringstream os_;
os_ << "Unknown state name '";
- curr_state_ = state_.c_str();
+ curr_state_ = state_.c_str ();
while (*curr_state_)
{
Modified: trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// runtime_error.hpp
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/boost/spirit/home/support/detail/lexer/size_t.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/size_t.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/size_t.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// size_t.h
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: trunk/boost/spirit/home/support/detail/lexer/string_token.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/lexer/string_token.hpp (original)
+++ trunk/boost/spirit/home/support/detail/lexer/string_token.hpp 2009-04-05 08:19:49 EDT (Sun, 05 Apr 2009)
@@ -1,5 +1,5 @@
// string_token.hpp
-// Copyright (c) 2007-2008 Ben Hanson (http://www.benhanson.net/)
+// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk