| |
| /* |
| * 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 |