X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2FParser.h;h=11af29b6667e312234195b8879aa26154488213a;hb=28f43b18963a5088529d4ac7c165fa95e62fd02b;hp=6bc53f169935954b674909bbdf09bfc50372f344;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/tex2lyx/Parser.h b/src/tex2lyx/Parser.h index 6bc53f1699..11af29b666 100644 --- a/src/tex2lyx/Parser.h +++ b/src/tex2lyx/Parser.h @@ -12,10 +12,11 @@ #ifndef PARSER_H #define PARSER_H -#include #include #include +#include +#include "support/docstream.h" namespace lyx { @@ -46,9 +47,6 @@ enum CatCode { }; -CatCode catcode(unsigned char c); - - enum { FLAG_BRACE_LAST = 1 << 1, // last closing brace ends the parsing FLAG_RIGHT = 1 << 2, // next \\right ends the parsing process @@ -75,18 +73,16 @@ enum { class Token { public: /// - Token() : cs_(), char_(0), cat_(catIgnore) {} - /// - Token(char c, CatCode cat) : cs_(), char_(c), cat_(cat) {} + Token() : cs_(), cat_(catIgnore) {} /// - Token(std::string const & cs, CatCode cat) : cs_(cs), char_(0), cat_(cat) {} + Token(docstring const & cs, CatCode cat) : cs_(to_utf8(cs)), cat_(cat) {} /// std::string const & cs() const { return cs_; } /// Returns the catcode of the token CatCode cat() const { return cat_; } /// - char character() const { return char_; } + char character() const { return cs_.empty() ? 0 : cs_[0]; } /// Returns the token as string std::string asString() const; /// Returns the token verbatim @@ -96,8 +92,6 @@ private: /// std::string cs_; /// - char char_; - /// CatCode cat_; }; @@ -119,9 +113,14 @@ class Parser { public: /// - Parser(std::istream & is); + Parser(idocstream & is); /// Parser(std::string const & s); + /// + ~Parser(); + + /// change the encoding of the input stream + void setEncoding(std::string const & encoding); /// int lineno() const { return lineno_; } @@ -174,22 +173,20 @@ public: char getChar(); /// void error(std::string const & msg); - /// Parses \p is into tokens - void tokenize(std::istream & is); + /// Parses one token from \p is + void tokenize_one(); /// void push_back(Token const & t); - /// - void pop_back(); /// The previous token. Token const & prev_token() const; /// The current token. Token const & curr_token() const; /// The next token. - Token const & next_token() const; + Token const & next_token(); /// Make the next token current and return that. Token const & get_token(); /// \return whether the current token starts a new paragraph - bool isParagraph() const; + bool isParagraph(); /// skips spaces (and comments if \p skip_comments is true) void skip_spaces(bool skip_comments = false); /// puts back spaces (and comments if \p skip_comments is true) @@ -197,7 +194,7 @@ public: /// void lex(std::string const & s); /// - bool good() const; + bool good(); /// std::string verbatim_item(); /// @@ -216,6 +213,10 @@ private: std::vector tokens_; /// unsigned pos_; + /// + idocstringstream * iss_; + /// + idocstream & is_; };