blob: 65a39a1a0fa25a1b1eef1c23296a51e2a95ddc75 [file] [log] [blame]
reed@android.com289e4fc2009-08-31 18:04:51 +00001#ifndef ForthParser_DEFINED
2#define ForthParser_DEFINED
3
4#include "SkTDict.h"
reed@android.comde2e7fb2009-09-02 02:07:32 +00005//#include "SkString.h"
reed@android.com289e4fc2009-08-31 18:04:51 +00006
7class ForthWord;
8class FCode;
9
10class ForthParser {
11public:
12 ForthParser();
13 ~ForthParser();
14
15 const char* parse(const char text[], FCode*);
16
17 void addWord(const char name[], ForthWord* word) {
18 this->add(name, strlen(name), word);
19 }
20
21 void add(const char name[], size_t len, ForthWord* word) {
reed@android.comde2e7fb2009-09-02 02:07:32 +000022 // SkString str(name, len);
23 // SkDebugf("add %s %p\n", str.c_str(), word);
reed@android.com289e4fc2009-08-31 18:04:51 +000024 (void)fDict.set(name, len, word);
25 }
26
27 ForthWord* find(const char name[], size_t len) const {
28 ForthWord* word;
29 return fDict.find(name, len, &word) ? word : NULL;
30 }
31
32private:
33 void addStdWords();
34
35 SkTDict<ForthWord*> fDict;
36};
37
38#endif