1 #ifndef MSP_GL_PROGRAMCOMPILER_H_
2 #define MSP_GL_PROGRAMCOMPILER_H_
4 #include "programparser.h"
5 #include "programsyntax.h"
15 struct Formatter: ProgramSyntax::NodeVisitor
17 std::string formatted;
24 virtual void visit(ProgramSyntax::Block &);
25 virtual void visit(ProgramSyntax::Literal &);
26 virtual void visit(ProgramSyntax::ParenthesizedExpression &);
27 virtual void visit(ProgramSyntax::VariableReference &);
28 virtual void visit(ProgramSyntax::MemberAccess &);
29 virtual void visit(ProgramSyntax::UnaryExpression &);
30 virtual void visit(ProgramSyntax::BinaryExpression &);
31 virtual void visit(ProgramSyntax::FunctionCall &);
32 virtual void visit(ProgramSyntax::ExpressionStatement &);
33 virtual void visit(ProgramSyntax::Layout &);
34 virtual void visit(ProgramSyntax::StructDeclaration &);
35 virtual void visit(ProgramSyntax::VariableDeclaration &);
36 virtual void visit(ProgramSyntax::InterfaceBlock &);
37 virtual void visit(ProgramSyntax::FunctionDeclaration &);
38 virtual void visit(ProgramSyntax::Conditional &);
39 virtual void visit(ProgramSyntax::Iteration &);
40 virtual void visit(ProgramSyntax::Return &);
45 ProgramSyntax::Module *module;
50 void compile(const std::string &);
51 void compile(IO::Base &);
52 void add_shaders(Program &);
56 void process(ProgramSyntax::Context &);
57 static void inject_block(ProgramSyntax::Block &, const ProgramSyntax::Block &);
58 std::string format_context(ProgramSyntax::Context &);