X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramparser.h;h=4e8e38f0fcd48fb0c5033ffae76bad2add532783;hb=a0caabaed3aeb8947133d78986bfb4ae5ae3c893;hp=1ca1a44c564d7aa8e6e65ed5f37e465b6a3f2340;hpb=fd103d76d7546f7e22aefc18c090a844fc67409f;p=libs%2Fgl.git diff --git a/source/programparser.h b/source/programparser.h index 1ca1a44c..4e8e38f0 100644 --- a/source/programparser.h +++ b/source/programparser.h @@ -39,19 +39,21 @@ private: std::string source; std::string::const_iterator iter; std::deque next_tokens; - ProgramSyntax::Module main_module; - ProgramSyntax::Module *cur_module; + ProgramSyntax::Module *module; ProgramSyntax::Stage *cur_stage; std::set declared_types; static Operator operators[]; public: + ProgramParser(); + ~ProgramParser(); + ProgramSyntax::Module &parse(const std::string &); ProgramSyntax::Module &parse(IO::Base &); private: - void parse_source(ProgramSyntax::Module &); + void parse_source(); const std::string &peek_token(unsigned = 0); std::string parse_token(); @@ -74,6 +76,7 @@ private: ProgramSyntax::Node *parse_global_declaration(); ProgramSyntax::Node *parse_statement(); + ProgramSyntax::Import *parse_import(); ProgramSyntax::Layout *parse_layout(); void parse_block(ProgramSyntax::Block &, bool); ProgramSyntax::Expression *parse_expression(unsigned = 0); @@ -82,7 +85,6 @@ private: ProgramSyntax::StructDeclaration *parse_struct_declaration(); ProgramSyntax::VariableDeclaration *parse_variable_declaration(); ProgramSyntax::FunctionDeclaration *parse_function_declaration(); - void parse_function_parameter_list(ProgramSyntax::FunctionDeclaration &); ProgramSyntax::InterfaceBlock *parse_interface_block(); ProgramSyntax::Conditional *parse_conditional(); ProgramSyntax::Iteration *parse_iteration();