X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramparser.cpp;h=b607e1cfb8f063abfec2127b7c57247809677a81;hb=670cd5e97ba225b5eb43fdda4ad53bf2731a35fa;hp=b3a226fc98c55d2d9ceed2f39e9e498b4c68a71a;hpb=11520b2b95f4242b3ca4d2d3d14a0f2b5c1623f1;p=libs%2Fgl.git diff --git a/source/programparser.cpp b/source/programparser.cpp index b3a226fc..b607e1cf 100644 --- a/source/programparser.cpp +++ b/source/programparser.cpp @@ -263,7 +263,7 @@ void ProgramParser::skip_comment_and_whitespace() { if(*iter=='/') comment = 0; - else + else if(*iter!='*') comment = 3; } @@ -315,7 +315,7 @@ bool ProgramParser::is_interface_qualifier(const string &token) bool ProgramParser::is_sampling_qualifier(const string &token) { - return token=="centroid"; + return (token=="centroid" || token=="sample"); } bool ProgramParser::is_interpolation_qualifier(const string &token) @@ -853,14 +853,19 @@ RefPtr ProgramParser::parse_iteration() loop->init_statement = parse_statement(); else { - RefPtr expr = new ExpressionStatement; - expr->expression = parse_expression(); + if(token!=";") + { + RefPtr expr = new ExpressionStatement; + expr->expression = parse_expression(); + loop->init_statement = expr; + } expect(";"); - loop->init_statement = expr; } - loop->condition = parse_expression(); + if(peek_token()!=";") + loop->condition = parse_expression(); expect(";"); - loop->loop_expression = parse_expression(); + if(peek_token()!=")") + loop->loop_expression = parse_expression(); expect(")"); parse_block(loop->body, false);