X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flisp%2Flexer.hpp;h=e51f53614a8cd6aa22d6b381950e77a99e07db59;hb=7bb247564b8236e60384827137e57f328f9614f5;hp=8128b13d7e6690c59ee48d6ddf74edc991341d1d;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/lisp/lexer.hpp b/src/lisp/lexer.hpp index 8128b13d7..e51f53614 100644 --- a/src/lisp/lexer.hpp +++ b/src/lisp/lexer.hpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux // Copyright (C) 2006 Matthias Braun // -// 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 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 3 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 @@ -14,14 +12,14 @@ // 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// along with this program. If not, see . -#ifndef __LISPLEXER_H__ -#define __LISPLEXER_H__ +#ifndef HEADER_SUPERTUX_LISP_LEXER_HPP +#define HEADER_SUPERTUX_LISP_LEXER_HPP -namespace lisp -{ +#include + +namespace lisp { class Lexer { @@ -37,7 +35,7 @@ public: TOKEN_TRUE, TOKEN_FALSE }; - + Lexer(std::istream& stream); ~Lexer(); @@ -46,26 +44,34 @@ public: { return token_string; } int getLineNumber() const { return linenumber; } - + private: enum { MAX_TOKEN_LENGTH = 16384, BUFFER_SIZE = 1024 }; - + inline void nextChar(); - + inline void addChar(); + +private: std::istream& stream; bool eof; int linenumber; char buffer[BUFFER_SIZE+1]; char* bufend; - char* c; + char* bufpos; + int c; char token_string[MAX_TOKEN_LENGTH + 1]; int token_length; + +private: + Lexer(const Lexer&); + Lexer & operator=(const Lexer&); }; } // end of namespace lisp #endif +/* EOF */