summaryrefslogtreecommitdiff
path: root/src/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/parser.h b/src/parser.h
index a925188..a168c7b 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -1,7 +1,14 @@
1/*
2 * Copyright (C) 2007-2011 Xagasoft, All rights reserved.
3 *
4 * This file is part of the libbu++ library and is released under the
5 * terms of the license contained in the file LICENSE.
6 */
7
1#ifndef BU_PARSER_H 8#ifndef BU_PARSER_H
2#define BU_PARSER_H 9#define BU_PARSER_H
3 10
4#include "bu/fstring.h" 11#include "bu/string.h"
5#include "bu/list.h" 12#include "bu/list.h"
6#include "bu/array.h" 13#include "bu/array.h"
7#include "bu/hash.h" 14#include "bu/hash.h"
@@ -43,7 +50,7 @@ namespace Bu
43 void parse(); 50 void parse();
44 51
45 void setRootNonTerminal( int iRoot ); 52 void setRootNonTerminal( int iRoot );
46 void setRootNonTerminal( const Bu::FString &sRoot ); 53 void setRootNonTerminal( const Bu::String &sRoot );
47 54
48 typedef Bu::Signal1<void, Parser &> Reduction; 55 typedef Bu::Signal1<void, Parser &> Reduction;
49 56
@@ -87,17 +94,17 @@ namespace Bu
87 bool bCanSkip; 94 bool bCanSkip;
88 }; 95 };
89 96
90 int addNonTerminal( const Bu::FString &sName, NonTerminal &nt ); 97 int addNonTerminal( const Bu::String &sName, NonTerminal &nt );
91 int addNonTerminal( const Bu::FString &sName ); 98 int addNonTerminal( const Bu::String &sName );
92 void setNonTerminal( const Bu::FString &sName, NonTerminal &nt ); 99 void setNonTerminal( const Bu::String &sName, NonTerminal &nt );
93 int getNonTerminalId( const Bu::FString &sName ); 100 int getNonTerminalId( const Bu::String &sName );
94 bool hasNonTerminal( const Bu::FString &sName ); 101 bool hasNonTerminal( const Bu::String &sName );
95 102
96 int addReduction( const Bu::FString &sName, const Reduction &r ); 103 int addReduction( const Bu::String &sName, const Reduction &r );
97 int addReduction( const Bu::FString &sName ); 104 int addReduction( const Bu::String &sName );
98 void setReduction( const Bu::FString &sName, const Reduction &r ); 105 void setReduction( const Bu::String &sName, const Reduction &r );
99 int getReductionId( const Bu::FString &sName ); 106 int getReductionId( const Bu::String &sName );
100 bool hasReduction( const Bu::FString &sName ); 107 bool hasReduction( const Bu::String &sName );
101 108
102 private: 109 private:
103 bool selectProduction( int iNt, Lexer::Token *ptCur ); 110 bool selectProduction( int iNt, Lexer::Token *ptCur );
@@ -108,7 +115,7 @@ namespace Bu
108 typedef Bu::List<Lexer::Token *> TokenStack; 115 typedef Bu::List<Lexer::Token *> TokenStack;
109 typedef Bu::List<Production::const_iterator> StateStack; 116 typedef Bu::List<Production::const_iterator> StateStack;
110 typedef Bu::Array<Reduction> ReductionArray; 117 typedef Bu::Array<Reduction> ReductionArray;
111 typedef Bu::Hash<Bu::FString,int> NameIndexHash; 118 typedef Bu::Hash<Bu::String,int> NameIndexHash;
112 typedef Bu::Array<NonTerminal> NonTerminalArray; 119 typedef Bu::Array<NonTerminal> NonTerminalArray;
113 120
114 LexerStack sLexer; 121 LexerStack sLexer;