diff --git a/libwccl/lexicon/lexfilegrammar.g b/libwccl/lexicon/lexfilegrammar.g index 19640c6667a661b29189388001097d2983f2fce4..ce3664818000e66f3eff7c68d0cb0d9cf31ecb56 100644 --- a/libwccl/lexicon/lexfilegrammar.g +++ b/libwccl/lexicon/lexfilegrammar.g @@ -53,10 +53,10 @@ private: /////////////////////////////////////////////////////////////////////////////// parse_lexicon_file - [const std::string& name] + [const std::string& name, const std::string& file_name] returns [boost::shared_ptr<Lexicon> lex] { - lex.reset(new Lexicon(name)); + lex.reset(new Lexicon(name, file_name)); } : (lexicon_entry [*lex])* EOF diff --git a/libwccl/lexicon/lexicon.h b/libwccl/lexicon/lexicon.h index c02f6284805c7901c2baa10cc4d5b5954e785d22..d691f4b3bf225271443f677c094c140a058dce14 100644 --- a/libwccl/lexicon/lexicon.h +++ b/libwccl/lexicon/lexicon.h @@ -14,8 +14,9 @@ class Lexicon : boost::noncopyable public: typedef boost::unordered_map<UnicodeString, UnicodeString> map_t; - Lexicon(const std::string& name) - : name_(name) + Lexicon(const std::string& name, const std::string& file_name) + : name_(name), + file_name_(file_name_) { BOOST_ASSERT(!name_.empty()); } @@ -40,6 +41,10 @@ public: return name_; } + std::string file_name() const { + return file_name_; + } + bool has_key(const UnicodeString& key) const { return map_.find(key) != map_.end(); } @@ -55,6 +60,7 @@ public: private: map_t map_; const std::string name_; + const std::string file_name_; }; } /* end ns Wccl */ diff --git a/libwccl/lexicon/lexiconparser.cpp b/libwccl/lexicon/lexiconparser.cpp index acb54cc41e804bc9e1afffaca47b02ebfa2a492a..578d322bf3bb69ea16c309bc652d3412306903d1 100644 --- a/libwccl/lexicon/lexiconparser.cpp +++ b/libwccl/lexicon/lexiconparser.cpp @@ -22,7 +22,7 @@ boost::shared_ptr<Lexicon> LexiconParser::parse_lexicon( ANTLRLexiconLexer lexer(is); ANTLRLexiconParser parser(lexer); - return parser.parse_lexicon_file(lexicon_name); + return parser.parse_lexicon_file(lexicon_name, filename); } } /* end ns Wccl */ diff --git a/libwccl/lexicon/lexicons.h b/libwccl/lexicon/lexicons.h index 1fd0c5ff01b2975458de1a2ee69a4fcac4818dbf..96f4fa1b2d0f4499558df39a4750d87950698ea9 100644 --- a/libwccl/lexicon/lexicons.h +++ b/libwccl/lexicon/lexicons.h @@ -26,6 +26,10 @@ public: void insert(const boost::shared_ptr<Lexicon>& lexicon); + const map_t& get_lexicons() const { + return lexicons_; + } + private: map_t lexicons_; };