1 #ifndef PROJECTFILE_HPP
2 #define PROJECTFILE_HPP
3 #include <sngcm/cmparser/ParserApi.hpp>
4 #include <sngcm/ast/Project.hpp>
5 #include <soulng/lexer/Token.hpp>
6 #include <soulng/parser/Match.hpp>
7 #include <soulng/parser/Value.hpp>
8
9
10
11 class ContainerFileLexer;
12
13 struct ProjectFileParser
14 {
15 static std::unique_ptr<sngcm::ast::Project> Parse(ContainerFileLexer& lexer, std::string config, sngcm::ast::BackEnd backend, std::string toolChain, sngcm::ast::SystemDirKind systemDirKind);
16 static soulng::parser::Match ProjectFile(ContainerFileLexer& lexer, std::string config, sngcm::ast::BackEnd backend, std::string toolChain, sngcm::ast::SystemDirKind systemDirKind);
17 static soulng::parser::Match QualifiedId(ContainerFileLexer& lexer);
18 static soulng::parser::Match Declaration(ContainerFileLexer& lexer);
19 static soulng::parser::Match ReferenceDeclaration(ContainerFileLexer& lexer);
20 static soulng::parser::Match SourceFileDeclaration(ContainerFileLexer& lexer);
21 static soulng::parser::Match ResourceFileDeclaration(ContainerFileLexer& lexer);
22 static soulng::parser::Match TextFileDeclaration(ContainerFileLexer& lexer);
23 static soulng::parser::Match TargetDeclaration(ContainerFileLexer& lexer);
24 static soulng::parser::Match Target(ContainerFileLexer& lexer);
25 };
26
27 #endif // PROJECTFILE_HPP