1 #ifndef CLASS_HPP
2 #define CLASS_HPP
3 #include <sngcm/cmparser/ParserApi.hpp>
4 #include <sngcm/ast/Class.hpp>
5 #include <sngcm/cmparser/ParsingContext.hpp>
6 #include <soulng/lexer/Token.hpp>
7 #include <soulng/parser/Match.hpp>
8 #include <soulng/parser/Value.hpp>
9
10
11
12 class CmajorLexer;
13
14 struct ClassParser
15 {
16 static soulng::parser::Match Class(CmajorLexer& lexer, ParsingContext* ctx);
17 static soulng::parser::Match InheritanceAndInterfaces(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
18 static soulng::parser::Match BaseClassOrInterface(CmajorLexer& lexer, ParsingContext* ctx);
19 static soulng::parser::Match ClassContent(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
20 static soulng::parser::Match ClassMember(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
21 static soulng::parser::Match StaticConstructor(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
22 static soulng::parser::Match Constructor(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
23 static soulng::parser::Match Destructor(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::ClassNode* classNode);
24 static soulng::parser::Match Initializer(CmajorLexer& lexer, ParsingContext* ctx);
25 static soulng::parser::Match MemberFunction(CmajorLexer& lexer, ParsingContext* ctx);
26 static soulng::parser::Match ConversionFunction(CmajorLexer& lexer, ParsingContext* ctx);
27 static soulng::parser::Match MemberVariable(CmajorLexer& lexer, ParsingContext* ctx);
28 };
29
30 #endif // CLASS_HPP