* Licence details can be found in the file COPYING.
*
* \author Alejandro Aguilar Sierra
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
* \author Jean-Marc Lasgouttes
* \author John Levon
*
{
string const tmpmsg = subst(message, "$$Token", getString());
lyxerr << "LyX: " << tmpmsg << " [around line " << lineno
- << " of file " << to_utf8(makeDisplayPath(name)) << ']' << endl;
+ << " of file " << to_utf8(makeDisplayPath(name))
+ << " current token: '" << getString() << "'"
+ << " context: '" << context << "']" << endl;
}
is.get(cc);
c = cc;
- // skip ','s
- if (esc && c == ',')
- continue;
-
-
if (c == commentChar) {
// Read rest of line (fast :-)
#if 1
break;
}
- if (!esc && c == ',')
+ if (c == ',')
continue; /* Skip ','s */
- // using relational operators with chars other
- // than == and != is not safe. And if it is done
- // the type _have_ to be unsigned. It usually a
- // lot better to use the functions from cctype
+ // using relational operators with chars other
+ // than == and != is not safe. And if it is done
+ // the type _have_ to be unsigned. It usually a
+ // lot better to use the functions from cctype
if (c > ' ' && is) {
buff.clear();
status = LEX_TOKEN;
}
- if (!esc && c == '\r' && is) {
+ if (c == '\r' && is) {
// The Windows support has lead to the
// possibility of "\r\n" at the end of
// a line. This will stop LyX choking
char cc = 0;
is.get(cc);
c = cc;
- if (c >= ' ' && is) {
+ if ((c >= ' ' || c == '\t') && is) {
buff.clear();
if (c == '\\') { // first char == '\\'
buff.push_back(c);
is.get(cc);
c = cc;
- } while (c >= ' ' && c != '\\' && is);
+ } while ((c >= ' ' || c == '\t') && c != '\\' && is);
}
if (c == '\\')
pimpl_->setCommentChar(c);
}
+
int Lexer::lex()
{
return pimpl_->lex();
pimpl_->printError("Bad boolean `$$Token'. "
"Use \"false\" or \"true\"");
lastReadOk_ = false;
+ return false;
}
}
+// same for docstring
+docstring Lexer::quoteString(docstring const & arg)
+{
+ docstring res;
+ res += '"';
+ res += subst(subst(arg, from_ascii("\\"), from_ascii("\\\\")),
+ from_ascii("\""), from_ascii("\\\""));
+ res += '"';
+ return res;
+}
+
+
Lexer & Lexer::operator>>(char const * required)
{
string token;