#include <fstream>
#include <iostream>
#include <string.h>
#include <ctype.h>
using namespace std;

typedef enum {Pismeno,Cislice,Jiny,Konec}Vstupy;
    typedef enum {IDENT,NUMB,kwCNF,kwP,kwC,EOL}LexSymbol;

    static const struct {char* slovo; LexSymbol symb;} TabKS[]={  // tabulka klíčových slov
       {"p",kwP},
       {"c",kwC},
       {"cnf",kwCNF}
     };


class LexAn {

private:
   char Aktualni;     // uchovava aktualni znak
   Vstupy Vstup;      // uchovava typ vstupniho symbolu
// *** Private metody ***
   int CtiZnak();
   void CtiVstup(void);
   void readIK();
   void readNUMBER();
   LexSymbol KeyWord();
   int  CisloRadku; // uchovava cislo radku


public:
    int  Cislo;        // uchovava ctenou promennou cislo
    int Znak;          // uchovava ctenou promennou Znak
    LexSymbol symb;    // uchovava typ lexikalniho symbolu
    string id;         // uchovava cteny identifikator/KW
    FILE *Vstupf;      // ukazatel na vstupni soubor

// **** Public metody ******
    void Error(char* errorMessage);
    void InitVstup(char *jmeno);
    void Element(void);
    void vypis();
};





