class Parser {
public:
- Parser(const char *file, ParsedSource &product)
- : file(file), in(file), tok(in), product(product) { }
+ Parser(const std::string &file, ParsedSource &product);
~Parser() { }
private:
Parser(const Parser &);
public:
class Error: public std::runtime_error {
public:
- Error(const char *file, int line, const std::string &msg)
+ Error(const std::string &file, int line, const std::string &msg)
: std::runtime_error(msg), file(file), line(line) { };
- const char *File() const { return file; }
+ ~Error() throw() { }
+ const std::string &File() const { return file; }
int Line() const { return line; }
private:
- const char *file;
+ std::string file;
int line;
};
void AssertTokenType(Tokenizer::Token::Type actual, Tokenizer::Token::Type expected);
void AssertTokenType(Tokenizer::Token::Type actual, Tokenizer::Token::Type expected, const std::string &msg);
bool BeginningOfLiteral(const Tokenizer::Token &) const;
+ bool BeginningOfPrimitiveLiteral(const Tokenizer::Token &) const;
bool BeginOfPropertyList(const Tokenizer::Token &) const;
private:
- const char *file;
+ std::string file;
+ std::string dirname;
std::ifstream in;
Tokenizer tok;
ParsedSource &product;