diff options
author | Mike Buland <eichlan@xagasoft.com> | 2010-10-12 18:10:47 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2010-10-12 18:10:47 +0000 |
commit | fc16fc104a038146c8ab6c2e9fad38e18663a09f (patch) | |
tree | b8b50c7349ebd2869ee8599be89c82705235fd2a /src/parser.h | |
parent | 0981b9d6a12bd7aadbf9286459e033ac1a2ba910 (diff) | |
download | libbu++-fc16fc104a038146c8ab6c2e9fad38e18663a09f.tar.gz libbu++-fc16fc104a038146c8ab6c2e9fad38e18663a09f.tar.bz2 libbu++-fc16fc104a038146c8ab6c2e9fad38e18663a09f.tar.xz libbu++-fc16fc104a038146c8ab6c2e9fad38e18663a09f.zip |
It's getting close. I'm not 100% sure abouth this method yet...
Diffstat (limited to 'src/parser.h')
-rw-r--r-- | src/parser.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/parser.h b/src/parser.h index e720e54..5b5d4a8 100644 --- a/src/parser.h +++ b/src/parser.h | |||
@@ -62,7 +62,7 @@ namespace Bu | |||
62 | State( Type eType, int iIndex ); | 62 | State( Type eType, int iIndex ); |
63 | virtual ~State(); | 63 | virtual ~State(); |
64 | 64 | ||
65 | private: | 65 | //private: |
66 | Type eType; | 66 | Type eType; |
67 | int iIndex; | 67 | int iIndex; |
68 | }; | 68 | }; |
@@ -76,10 +76,12 @@ namespace Bu | |||
76 | virtual ~NonTerminal(); | 76 | virtual ~NonTerminal(); |
77 | 77 | ||
78 | void addProduction( Production p ); | 78 | void addProduction( Production p ); |
79 | void setCanSkip(); | ||
79 | 80 | ||
80 | private: | 81 | // private: |
81 | typedef Bu::List<Production> ProductionList; | 82 | typedef Bu::List<Production> ProductionList; |
82 | ProductionList lProduction; | 83 | ProductionList lProduction; |
84 | bool bCanSkip; | ||
83 | }; | 85 | }; |
84 | 86 | ||
85 | int addNonTerminal( const Bu::FString &sName, NonTerminal &nt ); | 87 | int addNonTerminal( const Bu::FString &sName, NonTerminal &nt ); |
@@ -93,6 +95,10 @@ namespace Bu | |||
93 | int getReductionId( const Bu::FString &sName ); | 95 | int getReductionId( const Bu::FString &sName ); |
94 | 96 | ||
95 | private: | 97 | private: |
98 | bool selectProduction( int iNt, Lexer::Token *ptCur ); | ||
99 | void advanceState(); | ||
100 | |||
101 | private: | ||
96 | typedef Bu::List<Lexer *> LexerStack; | 102 | typedef Bu::List<Lexer *> LexerStack; |
97 | typedef Bu::List<Lexer::Token *> TokenStack; | 103 | typedef Bu::List<Lexer::Token *> TokenStack; |
98 | typedef Bu::List<Production::const_iterator> StateStack; | 104 | typedef Bu::List<Production::const_iterator> StateStack; |
@@ -109,6 +115,9 @@ namespace Bu | |||
109 | NameIndexHash hNonTerminalName; | 115 | NameIndexHash hNonTerminalName; |
110 | int iRootNonTerminal; | 116 | int iRootNonTerminal; |
111 | }; | 117 | }; |
118 | Bu::Formatter &operator<<( Bu::Formatter &f, Bu::Parser::State::Type t ); | ||
119 | Bu::Formatter &operator<<( Bu::Formatter &f, const Bu::Parser::State &s ); | ||
112 | }; | 120 | }; |
113 | 121 | ||
122 | |||
114 | #endif | 123 | #endif |