1 #ifndef ENUMERATION_HPP
2 #define ENUMERATION_HPP
3 #include <sngcm/cmparser/ParserApi.hpp>
4 #include <sngcm/ast/Enumeration.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 EnumerationParser
15 {
16 static soulng::parser::Match EnumType(CmajorLexer& lexer, ParsingContext* ctx);
17 static soulng::parser::Match UnderlyingType(CmajorLexer& lexer, ParsingContext* ctx);
18 static soulng::parser::Match EnumConstants(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::EnumTypeNode* enumType);
19 static soulng::parser::Match EnumConstant(CmajorLexer& lexer, ParsingContext* ctx, sngcm::ast::EnumTypeNode* enumType);
20 };
21
22 #endif // ENUMERATION_HPP