X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramparser.cpp;fp=source%2Fprogramparser.cpp;h=7477f38bc9a6ad01d1f0182ed2429caaa6f49d39;hp=ca554f427464b8863b03ed8211c0f8598e2c7c03;hb=53dac3ba3cb3a1e4ed23d5fa459187acde7a4904;hpb=dad209400d4e5d39076d949364f598b854c7a5d7 diff --git a/source/programparser.cpp b/source/programparser.cpp index ca554f42..7477f38b 100644 --- a/source/programparser.cpp +++ b/source/programparser.cpp @@ -369,8 +369,10 @@ void ProgramParser::preprocess() string token = peek_token(); if(token=="pragma") preprocess_pragma(); + else if(token=="version") + preprocess_version(); else if(token=="define" || token=="undef" || token=="if" || token=="ifdef" || token=="ifndef" || token=="else" || - token=="elif" || token=="endif" || token=="error" || token=="extension" || token=="version" || token=="line") + token=="elif" || token=="endif" || token=="error" || token=="extension" || token=="line") throw runtime_error(format_error(format("Unsupported preprocessor directive '%s'", token))); else if(!token.empty()) throw runtime_error(format_syntax_error("a preprocessor directive")); @@ -378,6 +380,18 @@ void ProgramParser::preprocess() iter = line_end; } +void ProgramParser::preprocess_version() +{ + expect("version"); + string token = parse_token(); + unsigned version = lexical_cast(token); + cur_stage->required_version = Version(version/100, version%100); + + token = parse_token(); + if(!token.empty()) + throw runtime_error(format_syntax_error("end of line")); +} + void ProgramParser::preprocess_pragma() { expect("pragma");