1 #ifndef LEXERDECLARATORPARSER_HPP
2 #define LEXERDECLARATORPARSER_HPP
3 #include <soulng/cppcode/Declaration.hpp>
4 #include <soulng/cppcode/Type.hpp>
5 #include <soulng/lexer/Token.hpp>
6 #include <soulng/parser/Match.hpp>
7 #include <soulng/parser/Value.hpp>
8
9
10
11 class LexerFileLexer;
12
13 struct LexerDeclaratorParser
14 {
15 static soulng::parser::Match InitDeclaratorList(LexerFileLexer& lexer);
16 static soulng::parser::Match InitDeclarator(LexerFileLexer& lexer);
17 static soulng::parser::Match Declarator(LexerFileLexer& lexer);
18 static soulng::parser::Match DirectDeclarator(LexerFileLexer& lexer);
19 static soulng::parser::Match DeclaratorId(LexerFileLexer& lexer);
20 static soulng::parser::Match TypeId(LexerFileLexer& lexer);
21 static soulng::parser::Match Type(LexerFileLexer& lexer);
22 static soulng::parser::Match TypeSpecifierSeq(LexerFileLexer& lexer, soulng::cppcode::TypeId* typeId);
23 static soulng::parser::Match AbstractDeclarator(LexerFileLexer& lexer);
24 static soulng::parser::Match DirectAbstractDeclarator(LexerFileLexer& lexer);
25 static soulng::parser::Match PtrOperator(LexerFileLexer& lexer);
26 static soulng::parser::Match CVQualifierSeq(LexerFileLexer& lexer);
27 static soulng::parser::Match Initializer(LexerFileLexer& lexer);
28 static soulng::parser::Match InitializerClause(LexerFileLexer& lexer);
29 static soulng::parser::Match InitializerList(LexerFileLexer& lexer, soulng::cppcode::AssignInit* init);
30 };
31
32 #endif // LEXERDECLARATORPARSER_HPP