mediawiki-extensions-AbuseF.../parser_native/parser.h
River Tarnell 1912d62d09 - rewrote AFPData to use boost::variant (type safe, no manual memory management)
- rewrote parser to use boost.spirit instead of a hand-written parser
- refactored request loading into 'request' object
- added 'expr', a command-line tool to test the new parser
- some performance fixes for affunctions
2008-08-08 00:01:22 +00:00

30 lines
561 B
C++

#ifndef EXPRESSOR_H
#define EXPRESSOR_H
#include <string>
#include <vector>
#include <boost/noncopyable.hpp>
#include <boost/function.hpp>
#include "aftypes.h"
struct parser_grammar;
struct expressor : boost::noncopyable {
typedef boost::function<AFPData (std::vector<AFPData>)> func_t;
expressor();
~expressor();
AFPData evaluate(std::string const &expr) const;
void add_variable(std::string const &name, AFPData value);
void add_function(std::string const &name, func_t value);
private:
parser_grammar *grammar_;
};
#endif /* !EXPRESSOR_H */