1 #ifndef CONCEPT_HPP
 2 #define CONCEPT_HPP
 3 #include <sngcm/cmparser/ParserApi.hpp>
 4 #include <sngcm/ast/Concept.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 // this file has been automatically generated from 'D:/work/soulng-project/sngcm/cmparser/Concept.parser' using soulng parser generator spg version 3.0.0
11 
12 class CmajorLexer;
13 
14 struct ConceptParser 
15 {
16     static soulng::parser::Match Concept(CmajorLexer& lexerParsingContext* ctx);
17     static soulng::parser::Match Refinement(CmajorLexer& lexer);
18     static soulng::parser::Match ConceptBody(CmajorLexer& lexerParsingContext* ctxsngcm::ast::ConceptNode* conceptNode);
19     static soulng::parser::Match ConceptBodyConstraint(CmajorLexer& lexerParsingContext* ctxsngcm::ast::ConceptNode* conceptNode);
20     static soulng::parser::Match TypeNameConstraint(CmajorLexer& lexerParsingContext* ctx);
21     static soulng::parser::Match SignatureConstraint(CmajorLexer& lexerParsingContext* ctxsngcm::ast::IdentifierNode* firstTypeParameter);
22     static soulng::parser::Match ConstructorConstraint(CmajorLexer& lexerParsingContext* ctxsngcm::ast::IdentifierNode* firstTypeParameter);
23     static soulng::parser::Match DestructorConstraint(CmajorLexer& lexerParsingContext* ctxsngcm::ast::IdentifierNode* firstTypeParameter);
24     static soulng::parser::Match MemberFunctionConstraint(CmajorLexer& lexerParsingContext* ctx);
25     static soulng::parser::Match FunctionConstraint(CmajorLexer& lexerParsingContext* ctx);
26     static soulng::parser::Match EmbeddedConstraint(CmajorLexer& lexerParsingContext* ctx);
27     static soulng::parser::Match WhereConstraint(CmajorLexer& lexerParsingContext* ctx);
28     static soulng::parser::Match ConstraintExpr(CmajorLexer& lexerParsingContext* ctx);
29     static soulng::parser::Match DisjunctiveConstraintExpr(CmajorLexer& lexerParsingContext* ctx);
30     static soulng::parser::Match ConjunctiveConstraintExpr(CmajorLexer& lexerParsingContext* ctx);
31     static soulng::parser::Match PrimaryConstraintExpr(CmajorLexer& lexerParsingContext* ctx);
32     static soulng::parser::Match AtomicConstraintExpr(CmajorLexer& lexerParsingContext* ctx);
33     static soulng::parser::Match PredicateConstraint(CmajorLexer& lexerParsingContext* ctx);
34     static soulng::parser::Match IsConstraint(CmajorLexer& lexerParsingContext* ctx);
35     static soulng::parser::Match ConceptOrTypeName(CmajorLexer& lexerParsingContext* ctx);
36     static soulng::parser::Match MultiParamConstraint(CmajorLexer& lexerParsingContext* ctx);
37     static soulng::parser::Match Axiom(CmajorLexer& lexerParsingContext* ctxsngcm::ast::ConceptNode* conceptNode);
38     static soulng::parser::Match AxiomBody(CmajorLexer& lexerParsingContext* ctxsngcm::ast::AxiomNode* axiom);
39     static soulng::parser::Match AxiomStatement(CmajorLexer& lexerParsingContext* ctx);
40 };
41 
42 #endif // CONCEPT_HPP