1 #ifndef PARSERDECLARATIONPARSER_HPP
2 #define PARSERDECLARATIONPARSER_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 ParserFileLexer;
12
13 struct ParserDeclarationParser
14 {
15 static soulng::parser::Match BlockDeclaration(ParserFileLexer& lexer);
16 static soulng::parser::Match SimpleDeclaration(ParserFileLexer& lexer);
17 static soulng::parser::Match DeclSpecifierSeq(ParserFileLexer& lexer, soulng::cppcode::SimpleDeclaration* declaration);
18 static soulng::parser::Match DeclSpecifier(ParserFileLexer& lexer);
19 static soulng::parser::Match StorageClassSpecifier(ParserFileLexer& lexer);
20 static soulng::parser::Match TypeSpecifier(ParserFileLexer& lexer);
21 static soulng::parser::Match SimpleTypeSpecifier(ParserFileLexer& lexer);
22 static soulng::parser::Match TypeName(ParserFileLexer& lexer);
23 static soulng::parser::Match TemplateArgumentList(ParserFileLexer& lexer, soulng::cppcode::TypeName* typeName);
24 static soulng::parser::Match TemplateArgument(ParserFileLexer& lexer);
25 static soulng::parser::Match Typedef(ParserFileLexer& lexer);
26 static soulng::parser::Match CVQualifier(ParserFileLexer& lexer);
27 static soulng::parser::Match NamespaceAliasDefinition(ParserFileLexer& lexer);
28 static soulng::parser::Match UsingDeclaration(ParserFileLexer& lexer);
29 static soulng::parser::Match UsingDirective(ParserFileLexer& lexer);
30 };
31
32 #endif // PARSERDECLARATIONPARSER_HPP