// Copyright {Jagger Software Limited} 2003 #include "grammar/qualified_symbol_definition.hpp" #include "grammar/unnamed_symbol_definition.hpp" #include "grammar/visitor.hpp" #include using namespace ::std; namespace grammar // qualified_symbol_definition - 'tors { qualified_symbol_definition::qualified_symbol_definition ( const grammar::symbol_definition & qualified, size_t lo, size_t hi ) : symbol_definition(qualified) , multiplicity(lo, hi) , key(qualified.key) { } qualified_symbol_definition::qualified_symbol_definition ( const grammar::symbol_definition & qualified, size_t lo, infinity_type hi ) : symbol_definition(qualified) , multiplicity(lo, hi) , key(qualified.key) { } } namespace grammar // qualified_symbol_definition - visiting { bool qualified_symbol_definition::accept(::grammar::visitor & visitor) const { return visitor.visit(*this); } } namespace grammar // qualified_symbol_definition - streaming { ostream & operator<<(ostream & out, const qualified_symbol_definition & to_write) { const symbol_definition & definition = to_write.symbol_definition; if (dynamic_cast(&definition)) { out << definition; } else { out << definition.name; } out << to_write.multiplicity; return out; } }