// -*- C++ -*- // Generalized simple lexical analizer. // It can be used for simple syntax parsers, like lyxrc, // texclass and others to come. [asierra30/03/96] // // (C) 1996 Lyx Team. #ifndef _LYXLEX_H #define _LYXLEX_H
/*@Doc: Generalized simple lexical analizer. It can be used for simple syntax parsers, like lyxrc, texclass and others to come. See lyxrc.C for an example of usage.
*/ class LyXLex { public: ///
LyXLex (keyword_item*, int); ///
~LyXLex() { if (file && owns_file) fclose(file); };
/// file is open and end of file is not reached bool IsOK(); /// return true if able to open file, else false bool setFile(LString const & filename); /// if file is already read from, line numbers will be wrong. // should be removed void setFile(FILE *f); /// // should be removed
FILE *getFile() { return file; } /// Danger! Don't use it unless you know what you are doing. void setLineNo(int l) { lineno = l; } /// returns a lex code int lex();
/** Just read athe next word. If esc is true remember that
some chars might be escaped: "\ atleast */ bool next(bool esc = false);
/** Read next token. This one is almost the same as next, but it will consider " as a regular character and always split a word if it contains a backslash.
*/ bool nextToken();
/// int GetLineNo() { return lineno; } /// int GetInteger(); /// bool GetBool(); /// float GetFloat(); ///
LString GetString() const;
/// get a long string, ended by the tag `endtag'
LString getLongString(LString const &endtoken);
/// bool EatLine(); /// int FindToken(charconst* string[]); /// int CheckToken(charconst* string[], int print_error);
/// charconst *text() const { return &buff[0]; }
/** Pushes a token list on a stack and replaces it with a new one.
*/ void pushTable(keyword_item*, int);
/** Pops a token list into void and replaces it with the one now on top of the stack.
*/ void popTable();
/** Prints an error message with the corresponding line number and file name. If message contains the substring `$$Token', it is replaced with the value of GetString()
*/ void printError(LString const & message);
/** Prints the current token table on stderr.
*/ void printTable(); protected: /// enum { ///
LEX_MAX_BUFF = 2048
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.