]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/tokenizer.cpp
Use default member initializers for simple types
[libs/gl.git] / source / glsl / tokenizer.cpp
index 0b18245f0e323e66c9c2eef6fb40ff19ba8307dc..4064d805e732dc8adaf5dbb912df1ce0824909bb 100644 (file)
@@ -10,9 +10,7 @@ namespace Msp {
 namespace GL {
 namespace SL {
 
-Tokenizer::Tokenizer():
-       allow_preprocess(true),
-       suppress_line_advance(false)
+Tokenizer::Tokenizer()
 {
        static string empty;
        iter = empty.begin();
@@ -95,7 +93,7 @@ void Tokenizer::preprocess()
 {
        SetForScope<deque<string> > clear_tokens(next_tokens, deque<string>());
 
-       string::const_iterator line_end = iter;
+       auto line_end = iter;
        for(; (line_end!=source_end && *line_end!='\n'); ++line_end) ;
        SetForScope<string::const_iterator> stop_at_line_end(source_end, line_end);
 
@@ -136,7 +134,9 @@ string Tokenizer::parse_number()
        }
 
        bool require_digit = false;
-       if(iter!=source_end && (*iter=='e' || *iter=='E'))
+       if(iter==source_end)
+               ;
+       else if(*iter=='e' || *iter=='E')
        {
                number += *iter++;
                if(iter!=source_end && (*iter=='-' || *iter=='+'))
@@ -152,11 +152,15 @@ string Tokenizer::parse_number()
                        else
                                break;
                }
+               if(!require_digit && iter!=source_end && *iter=='f')
+                       number += *iter++;
        }
+       else if(*iter=='u' || *iter=='f')
+               number += *iter++;
 
        if(require_digit)
                throw syntax_error(location, number, "Incomplete numeric literal");
-       else if(isalnum(*iter) || *iter=='_')
+       else if(iter!=source_end && (isalnum(*iter) || *iter=='_'))
                throw syntax_error(location, number, "Garbage at end of numeric literal");
 
        return number;