view Bison-Flex/CALC/Bison-Flex/calc-driver.h @ 0:db40c85cad7a default tip

upload sample source
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 09 May 2011 03:11:59 +0900
parents
children
line wrap: on
line source

#ifndef __CALC_DRIVER_H__
#define	__CALC_DRIVER_H__

#include "calc-parser.hh"
#include "node.h"

// Forward declarations.
class calc_driver;

#define	YY_DECL											\
	yy::calc_parser::token_type							\
	yylex(yy::calc_parser::semantic_type* yylval,		\
		 calc_driver& driver)

YY_DECL;

class calc_driver {
  public:
	calc_driver();
	virtual ~calc_driver();

	std::string &get_filename() { return file; }
	bool calc(const std::string &f);

	int value(const std::string *name)
	{
		return values[*name];
	}
	void assign(const std::string *value, cnode *node);
	void print(cnode *node);
	void list();

	// Error handling.
	void error(const std::string& m);

  private:
	void scan_begin();
	void scan_end();

  private:
	std::map<std::string, int> values;	// 変数テーブル

	std::string file;
} ;

#endif