X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flisp%2Flexer.hpp;h=e51f53614a8cd6aa22d6b381950e77a99e07db59;hb=7bb247564b8236e60384827137e57f328f9614f5;hp=5a2bc5948bfa620acba1fb463c260266c8bae76e;hpb=5b7f9214cb929399f1a855ef5807018a9447d510;p=supertux.git diff --git a/src/lisp/lexer.hpp b/src/lisp/lexer.hpp index 5a2bc5948..e51f53614 100644 --- a/src/lisp/lexer.hpp +++ b/src/lisp/lexer.hpp @@ -1,12 +1,10 @@ -// $Id$ +// SuperTux +// Copyright (C) 2006 Matthias Braun // -// Copyright (C) 2004 Matthias Braun -// code in this file based on lispreader from Mark Probst -// -// 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,13 +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. -#ifndef __LISPLEXER_H__ -#define __LISPLEXER_H__ +// along with this program. If not, see . -namespace lisp -{ +#ifndef HEADER_SUPERTUX_LISP_LEXER_HPP +#define HEADER_SUPERTUX_LISP_LEXER_HPP + +#include + +namespace lisp { class Lexer { @@ -36,7 +35,7 @@ public: TOKEN_TRUE, TOKEN_FALSE }; - + Lexer(std::istream& stream); ~Lexer(); @@ -45,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 */