]> www.ginac.de Git - ginac.git/blobdiff - ginac/parser/lexer.cpp
Fixed include of stdint.h (parser.cpp needs the header as well).
[ginac.git] / ginac / parser / lexer.cpp
index 7b00c4aef560a8f00d4976ef0250049325548e44..437db17542ca6175e5c68ca42780f4bfe6e453b6 100644 (file)
@@ -1,11 +1,35 @@
-#include <string>
-#include <iostream>
-#include <sstream>
+/** @file lexer.cpp
+ *
+ *  Implementation of GiNaC's lexer. */
+
+/*
+ *  GiNaC Copyright (C) 1999-2010 Johannes Gutenberg University Mainz, Germany
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
 #include "lexer.h"
 #include "compiler.h"
 
-namespace GiNaC
-{
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <cstdio>
+
+namespace GiNaC {
+
 /// Skip to the end of line
 static int skipline(std::istream* s);
 /// Skip to the next non-whitespace character
@@ -19,12 +43,12 @@ int lexer::gettok()
        // Skip any whitespace.
        c = skipspace(input, c, line_num);
 
-       // identifier: [a-zA-Z][a-zA-Z0-9]*
+       // identifier: [a-zA-Z][a-zA-Z0-9_]*
        if (isalpha(c)) { 
                str = c;
                do {
                        c = input->get();
-                       if (isalnum(c))
+                       if ( isalnum(c) || c=='_' )
                                str += c;
                        else
                                break;
@@ -154,4 +178,3 @@ std::string lexer::tok2str(const int tok) const
 }
 
 } // namespace GiNaC
-