/* 
 * File:   reader.h
 * Author: macino
 *
 * Created on Sobota, 2008, november 8, 23:49
 */

#ifndef _READER_H
#define	_READER_H

#include<iostream>

#include"Circuit.h"
#include"Input.h"
#include"Output.h"
#include"Rule.h"

using namespace std;

//trieda zodpovedna za vyparsovanie obvodu zo suboru do vnutornej formy
class Reader{
	//vysledny obvod, ktory vznikne parsovanim bench suboru
    Circuit* circuit;
	//string reprezentujuci obsah suboru
    string* input;
    
public:
    Reader(string *input);
    ~Reader();
	//metoda vytvarajuca reprezentaciu obvodu
    Circuit* parse();
};

//pomocna trieda pre Reader, je zodpovedna za "strihanie" suboru 
//na tokeny - casti suboru ako znaky, slova, cisla a pod.
class Token{
public:
    static const int TYPE_CHAR=0;
    static const int TYPE_AN_STRING=1;
    
    string content;
    int type;
    
    Token(string content,int type);
    ~Token();
    static Token* getFirst(string* input);
};

#endif	/* _READER_H */

