All pastes #2067077 Raw Edit

Anonymous

public cpp v1 · immutable
#2067077 ·published 2011-05-22 18:56 UTC
rendered paste body
#ifndef PARSER_H#define PARSER_H#include <vector>#include <fstream>#include "elements.h"#include "dispatcher.h"namespace Iscas {class Parser {    enum parser_token {	TK_ERR,	TK_SPACE,	TK_ENDLINE,	TK_LBRACE,	TK_RBRACE,	TK_COMMA,	TK_EQUAL,	TK_ELEM,	TK_NAME    };    static const char* token_names[];    enum parser_state {	ST_NULL,						//initial state	ST_INPUT,	ST_INPUT_LBRACE,	ST_INPUT_EDGE_NAME,	ST_INPUT_RBRACE,	ST_INPUT_COMPLETE,	ST_OUTPUT,	ST_OUTPUT_LBRACE,	ST_OUTPUT_EDGE_NAME,	ST_OUTPUT_RBRACE,	ST_OUTPUT_COMPLETE,	ST_LNAME,						//edge name on the left, expect space	ST_LNAME_SPACE,						//edge name and space on the left, expect equal	ST_LNAME_SPACE_EQUAL,					//edge name space equal on the left, expect space	ST_LNAME_COMPLETE,					//complete left part of the assignment	ST_ELEMENT_NAME,	ST_ELEMENT_NAME_LBRACE,	ST_ELEMENT_NAME_RBRACE,	ST_ELEMENT_NAME_EDGE_NAME,	ST_ELEMENT_NAME_EDGE_NAME_COMMA,	ST_ELEMENT_NAME_EDGE_NAME_COMMA_SPACE    };    enum { chunk_size = 1024 };    std::ifstream m_infile;    std::string m_fileName;    int m_size;    char m_buf[chunk_size];    logical_elements m_curElement;    std::string m_inputOutputName;    std::vector<std::string> m_edgeNames;    int m_edgeNumber;    char *m_start, *m_end;    Dispatcher *m_dispatcher;    parser_token get_token();public:    Parser() : m_start(0), m_end(0) {}    Parser( const std::string &file, Dispatcher *dispatcher );    int parse();};}	//namespace Iscas#endif