void ProgramParser::parse_source(Module &module)
{
cur_module = &module;
- cur_context = &module.global_context;
+ cur_stage = &module.shared;
iter = source.begin();
while(1)
{
while(Node *statement = parse_global_declaration())
- cur_context->content.body.push_back(statement);
- cur_context->present = !cur_context->content.body.empty();
+ cur_stage->content.body.push_back(statement);
+ cur_stage->present = !cur_stage->content.body.empty();
- Context *prev_context = cur_context;
+ Stage *prev_stage = cur_stage;
parse_token();
string token = parse_token();
if(token.empty())
break;
else if(token=="global")
- cur_context = &module.global_context;
+ cur_stage = &module.shared;
else if(token=="vertex")
- cur_context = &module.vertex_context;
+ cur_stage = &module.vertex_stage;
else if(token=="geometry")
- cur_context = &module.geometry_context;
+ cur_stage = &module.geometry_stage;
else if(token=="fragment")
- cur_context = &module.fragment_context;
+ cur_stage = &module.fragment_stage;
else
- throw runtime_error(format("Parse error at '%s': expected context identifier", token));
- cur_context->previous = prev_context;
+ throw runtime_error(format("Parse error at '%s': expected stage identifier", token));
+ cur_stage->previous = prev_stage;
for(; (iter!=source.end() && *iter!='\n'); ++iter) ;
}
{
expect("passthrough");
RefPtr<Passthrough> pass = new Passthrough;
- if(cur_context->type==GEOMETRY)
+ if(cur_stage->type==GEOMETRY)
{
expect("[");
pass->subscript = parse_expression();