- added check for 'region' symbol
[supertux.git] / src / lisp / lexer.cpp
index 05d687b..4e4f2fb 100644 (file)
@@ -16,7 +16,6 @@
 //  You should have received a copy of the GNU General Public License
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
 #include <config.h>
 
 #include <sstream>
@@ -40,7 +39,7 @@ Lexer::Lexer(std::istream& newstream)
     c = 0;
     bufend = 0;
     nextChar();
-  } catch(EOFException& e) {
+  } catch(EOFException& ) {
   }
 }
 
@@ -57,7 +56,7 @@ Lexer::nextChar()
       throw EOFException();
     stream.read(buffer, BUFFER_SIZE);
     size_t bytes_read = stream.gcount();
-    
+
     c = buffer;
     bufend = buffer + bytes_read;
 
@@ -83,9 +82,9 @@ Lexer::getNextToken()
         ++linenumber;
       nextChar();
     };
-    
+
     token_length = 0;
-    
+
     switch(*c) {
       case ';': // comment
         while(true) {
@@ -109,6 +108,8 @@ Lexer::getNextToken()
             nextChar();
             if(*c == '"')
               break;
+            else if (*c == '\r') // XXX this breaks with pure \r EOL
+              continue;
             else if(*c == '\n')
               linenumber++;
             else if(*c == '\\') {
@@ -138,7 +139,7 @@ Lexer::getNextToken()
       case '#': // constant
         try {
           nextChar();
-          
+
           while(isalnum(*c) || *c == '_') {
             if(token_length < MAX_TOKEN_LENGTH)
               token_string[token_length++] = *c;
@@ -171,15 +172,15 @@ Lexer::getNextToken()
           bool have_nondigits = false;
           bool have_digits = false;
           int have_floating_point = 0;
-          
+
           do {
             if(isdigit(*c))
               have_digits = true;
             else if(*c == '.')
               ++have_floating_point;
             else if(isalnum(*c) || *c == '_')
-              have_nondigits = true;  
-            
+              have_nondigits = true;
+
             if(token_length < MAX_TOKEN_LENGTH)
               token_string[token_length++] = *c;
 
@@ -187,7 +188,7 @@ Lexer::getNextToken()
           } while(!isspace(*c) && !strchr(delims, *c));
 
           token_string[token_length] = 0;
-          
+
           // no nextChar
 
           if(have_nondigits || !have_digits || have_floating_point > 1)
@@ -203,11 +204,11 @@ Lexer::getNextToken()
             nextChar();
           } while(!isspace(*c) && !strchr(delims, *c));
           token_string[token_length] = 0;
-          
+
           // no nextChar
 
           return TOKEN_SYMBOL;
-        }       
+        }
     }
   } catch(EOFException& ) {
     return TOKEN_EOF;
@@ -215,4 +216,3 @@ Lexer::getNextToken()
 }
 
 } // end of namespace lisp
-