1 2 /* 3 * Copyright 2011 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 #ifndef ForthParser_DEFINED 9 #define ForthParser_DEFINED 10 11 #include "SkTDict.h" 12 //#include "SkString.h" 13 14 class ForthWord; 15 class FCode; 16 17 class ForthParser { 18 public: 19 ForthParser(); 20 ~ForthParser(); 21 22 const char* parse(const char text[], FCode*); 23 addWord(const char name[],ForthWord * word)24 void addWord(const char name[], ForthWord* word) { 25 this->add(name, strlen(name), word); 26 } 27 add(const char name[],size_t len,ForthWord * word)28 void add(const char name[], size_t len, ForthWord* word) { 29 // SkString str(name, len); 30 // SkDebugf("add %s %p\n", str.c_str(), word); 31 SkDEBUGCODE(bool isNewWord = )fDict.set(name, len, word); 32 SkASSERT(isNewWord); 33 } 34 find(const char name[],size_t len)35 ForthWord* find(const char name[], size_t len) const { 36 ForthWord* word; 37 return fDict.find(name, len, &word) ? word : NULL; 38 } 39 40 private: 41 void addStdWords(); 42 43 SkTDict<ForthWord*> fDict; 44 }; 45 46 #endif 47