Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

lexer.h

Go to the documentation of this file.
00001 #ifndef lexer_h
00002 #define lexer_h
00003 
00004 #include "file.h"
00005 #include "error.h"
00006 
00008 
00009 class Lexer
00010 {
00011  private:
00012   File in;
00013   File out;
00014 
00015   bool eof_reached;
00016   
00017   int line_number;
00018   int cursor_pos;
00019 
00020   std::string current_dir;
00021 
00022  public:
00023   Lexer( File in, File out, std::string current_dir = "");
00024 
00025   void lex(); 
00026 
00027   class Error; 
00028 
00029   class cannot_open_file; 
00030 
00031   class cannot_create_file; 
00032 
00033  private:
00034   std::string read_line();   
00035 
00037   std::string::size_type find_tag( std::string line, std::string::size_type startpos );
00038 
00040   std::string::size_type find_end_of_tag( std::string line, std::string::size_type startpos );
00041 
00043   std::string get_tag( std::string line, std::string::size_type startpos );
00044 };
00045 
00047 class Lexer::Error : public :: Error
00048 {
00049  public:
00050   template <class T>Error( std::string error_string, T what )
00051     : ::Error( Line(), "Lexer", error_string, what )
00052     {}
00053 };
00054 
00056 class Lexer::cannot_open_file : public Lexer::Error
00057 {
00058  public:
00059   template <class T>cannot_open_file( T what )
00060     : Error( _("cannot open file"), what )
00061     {}
00062 };
00063 
00065 class Lexer::cannot_create_file : public Lexer::Error
00066 {
00067  public:
00068   template <class T>cannot_create_file( T what )
00069     : Error( _("cannot create file"), what )
00070     {}
00071 };
00072 
00073 #endif

Generated on Tue Nov 20 02:19:52 2001 for Leo<HTML> by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001