]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programparser.h
Record statement source lines and emit #line directives to output
[libs/gl.git] / source / programparser.h
index 903e58346f7a425a365cccfcf162f56caa75fa6e..dc94bd0044443bd01ca862584e6784a58da4fb9f 100644 (file)
@@ -38,6 +38,7 @@ private:
 
        std::string source;
        std::string source_name;
+       unsigned source_index;
        unsigned current_line;
        std::string::const_iterator iter;
        std::string::const_iterator source_end;
@@ -55,8 +56,8 @@ public:
        ProgramParser();
        ~ProgramParser();
 
-       ProgramSyntax::Module &parse(const std::string &, const std::string &);
-       ProgramSyntax::Module &parse(IO::Base &, const std::string &);
+       ProgramSyntax::Module &parse(const std::string &, const std::string &, unsigned = 0);
+       ProgramSyntax::Module &parse(IO::Base &, const std::string &, unsigned = 0);
 
 private:
        void parse_source();
@@ -90,8 +91,8 @@ private:
        void preprocess_pragma_msp();
        void preprocess_stage();
 
-       RefPtr<ProgramSyntax::Node> parse_global_declaration();
-       RefPtr<ProgramSyntax::Node> parse_statement();
+       RefPtr<ProgramSyntax::Statement> parse_global_declaration();
+       RefPtr<ProgramSyntax::Statement> parse_statement();
        RefPtr<ProgramSyntax::Import> parse_import();
        RefPtr<ProgramSyntax::Precision> parse_precision();
        RefPtr<ProgramSyntax::Layout> parse_layout();
@@ -104,7 +105,8 @@ private:
        RefPtr<ProgramSyntax::FunctionDeclaration> parse_function_declaration();
        RefPtr<ProgramSyntax::InterfaceBlock> parse_interface_block();
        RefPtr<ProgramSyntax::Conditional> parse_conditional();
-       RefPtr<ProgramSyntax::Iteration> parse_iteration();
+       RefPtr<ProgramSyntax::Iteration> parse_for();
+       RefPtr<ProgramSyntax::Iteration> parse_while();
        RefPtr<ProgramSyntax::Passthrough> parse_passthrough();
        RefPtr<ProgramSyntax::Return> parse_return();
 };