diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2006-07-30 09:07:20 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2006-07-30 09:07:20 +0000 |
| commit | 113fc467a7170a8a564049c64d1036dd10e6abac (patch) | |
| tree | e4719817a3e0175a9f7cbd4e07fc994ff41f8ef6 /src/builder.h | |
| parent | 900976d2d74e0de57858b265c2ef0d17a29e921a (diff) | |
| download | build-113fc467a7170a8a564049c64d1036dd10e6abac.tar.gz build-113fc467a7170a8a564049c64d1036dd10e6abac.tar.bz2 build-113fc467a7170a8a564049c64d1036dd10e6abac.tar.xz build-113fc467a7170a8a564049c64d1036dd10e6abac.zip | |
It's starting to look pretty good, just trying to figure out how to get through
everything that needs to be made modular and general.
Diffstat (limited to '')
| -rw-r--r-- | src/builder.h | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/src/builder.h b/src/builder.h index e379608..58afaf5 100644 --- a/src/builder.h +++ b/src/builder.h | |||
| @@ -2,35 +2,58 @@ | |||
| 2 | #define BUILDER_H | 2 | #define BUILDER_H |
| 3 | 3 | ||
| 4 | #include <string> | 4 | #include <string> |
| 5 | #include <list> | ||
| 6 | #include <map> | ||
| 7 | #include "build.tab.h" | ||
| 8 | #include "exceptionbase.h" | ||
| 5 | 9 | ||
| 6 | union YYSTYPE; | 10 | subExceptionDecl( BuildException ) |
| 7 | 11 | ||
| 8 | namespace yy | ||
| 9 | { | ||
| 10 | class location; | ||
| 11 | class BuildParser; | ||
| 12 | } | ||
| 13 | class Builder; | 12 | class Builder; |
| 13 | class Action; | ||
| 14 | class Command; | ||
| 14 | 15 | ||
| 15 | #define YY_DECL int yylex( YYSTYPE *yylval_param, yy::location *yylloc, Builder &bld ) | 16 | #define YY_DECL int yylex( YYSTYPE *yylval_param, YYLTYPE *yylloc_param, Builder &bld ) |
| 16 | YY_DECL; | 17 | YY_DECL; |
| 17 | 18 | ||
| 18 | class Builder | 19 | class Builder |
| 19 | { | 20 | { |
| 21 | struct ltstr | ||
| 22 | { | ||
| 23 | bool operator()(const char* s1, const char* s2) const | ||
| 24 | { | ||
| 25 | return strcmp(s1, s2) < 0; | ||
| 26 | } | ||
| 27 | }; | ||
| 28 | |||
| 20 | public: | 29 | public: |
| 21 | Builder(); | 30 | Builder(); |
| 22 | virtual ~Builder(); | 31 | virtual ~Builder(); |
| 23 | 32 | ||
| 24 | void load( const char *sFN ); | 33 | void load( const char *sFN ); |
| 25 | 34 | ||
| 26 | void error( const yy::location &l, const std::string &m ); | 35 | //void error( const yy::location &l, const std::string &m ); |
| 27 | void error( const std::string &m ); | 36 | //void error( const std::string &m ); |
| 28 | 37 | ||
| 29 | std::string file; | 38 | std::string file; |
| 30 | 39 | ||
| 40 | void add( Action *pAct ); | ||
| 41 | void add( Command *pCmd ); | ||
| 42 | |||
| 43 | bool hasDefaultAction() | ||
| 44 | { | ||
| 45 | return pDefaultAction != NULL; | ||
| 46 | } | ||
| 47 | |||
| 48 | void debug(); | ||
| 49 | |||
| 31 | private: | 50 | private: |
| 32 | void scanBegin(); | 51 | void scanBegin(); |
| 33 | void scanEnd(); | 52 | void scanEnd(); |
| 53 | |||
| 54 | Action *pDefaultAction; | ||
| 55 | Action *pLastAddedAction; | ||
| 56 | std::map<const char *, Action *, ltstr> mAction; | ||
| 34 | }; | 57 | }; |
| 35 | 58 | ||
| 36 | #endif | 59 | #endif |
