|  | 
 | /* | 
 |  * Copyright 2011 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 | #ifndef ForthParser_DEFINED | 
 | #define ForthParser_DEFINED | 
 |  | 
 | #include "SkTDict.h" | 
 | //#include "SkString.h" | 
 |  | 
 | class ForthWord; | 
 | class FCode; | 
 |  | 
 | class ForthParser { | 
 | public: | 
 |     ForthParser(); | 
 |     ~ForthParser(); | 
 |  | 
 |     const char* parse(const char text[], FCode*); | 
 |  | 
 |     void addWord(const char name[], ForthWord* word) { | 
 |         this->add(name, strlen(name), word); | 
 |     } | 
 |  | 
 |     void add(const char name[], size_t len, ForthWord* word) { | 
 |     //    SkString str(name, len); | 
 |     //    SkDebugf("add %s %p\n", str.c_str(), word); | 
 |         SkDEBUGCODE(bool isNewWord = )fDict.set(name, len, word); | 
 |         SkASSERT(isNewWord); | 
 |     } | 
 |  | 
 |     ForthWord* find(const char name[], size_t len) const { | 
 |         ForthWord* word; | 
 |         return fDict.find(name, len, &word) ? word : NULL; | 
 |     } | 
 |  | 
 | private: | 
 |     void addStdWords(); | 
 |  | 
 |     SkTDict<ForthWord*> fDict; | 
 | }; | 
 |  | 
 | #endif |