diff --git a/components/compiler/scanner.cpp b/components/compiler/scanner.cpp index 6f43f9fde..310fc9ec5 100644 --- a/components/compiler/scanner.cpp +++ b/components/compiler/scanner.cpp @@ -48,35 +48,35 @@ namespace Compiler switch (mPutback) { case Putback_Special: - - mPutback = Putback_None; + + mPutback = Putback_None; return parser.parseSpecial (mPutbackCode, mPutbackLoc, *this); - + case Putback_Integer: mPutback = Putback_None; return parser.parseInt (mPutbackInteger, mPutbackLoc, *this); - + case Putback_Float: mPutback = Putback_None; return parser.parseFloat (mPutbackFloat, mPutbackLoc, *this); - + case Putback_Name: - + mPutback = Putback_None; return parser.parseName (mPutbackName, mPutbackLoc, *this); - + case Putback_Keyword: mPutback = Putback_None; return parser.parseKeyword (mPutbackCode, mPutbackLoc, *this); - + case Putback_None: - + break; } - + char c; if (!get (c)) @@ -265,12 +265,12 @@ namespace Compiler cont = parser.parseName (name, loc, *this); return true; } - + int i = 0; std::string lowerCase; lowerCase.reserve (name.size()); - + std::transform (name.begin(), name.end(), std::back_inserter (lowerCase), (int(*)(int)) std::tolower); @@ -283,13 +283,13 @@ namespace Compiler cont = parser.parseKeyword (i, loc, *this); return true; } - + if (mExtensions) { if (int keyword = mExtensions->searchKeyword (lowerCase)) { cont = parser.parseKeyword (keyword, loc, *this); - return true; + return true; } } @@ -316,19 +316,20 @@ namespace Compiler name += c; break; } - else if (c=='\\') - { - if (!get (c)) - { - mErrorHandler.error ("incomplete escape sequence", mLoc); - break; - } - } +// ignoring escape sequences for now, because they are messing up stupid Windows path names. +// else if (c=='\\') +// { +// if (!get (c)) +// { +// mErrorHandler.error ("incomplete escape sequence", mLoc); +// break; +// } +// } else if (c=='\n') { mErrorHandler.error ("incomplete string or name", mLoc); break; - } + } } else if (!(c=='"' && name.empty())) { @@ -341,7 +342,7 @@ namespace Compiler if (first && std::isdigit (c)) error = true; } - + name += c; first = false; } @@ -374,7 +375,7 @@ namespace Compiler else { putback (c); - return false; + return false; } } else if (c=='!') @@ -449,8 +450,8 @@ namespace Compiler return false; if (special==S_newline) - mLoc.mLiteral = ""; - + mLoc.mLiteral = ""; + TokenLoc loc (mLoc); mLoc.mLiteral.clear(); @@ -477,40 +478,39 @@ namespace Compiler { while (scanToken (parser)); } - + void Scanner::putbackSpecial (int code, const TokenLoc& loc) { mPutback = Putback_Special; mPutbackCode = code; - mPutbackLoc = loc; + mPutbackLoc = loc; } - + void Scanner::putbackInt (int value, const TokenLoc& loc) { mPutback = Putback_Integer; mPutbackInteger = value; - mPutbackLoc = loc; - } + mPutbackLoc = loc; + } void Scanner::putbackFloat (float value, const TokenLoc& loc) { mPutback = Putback_Float; mPutbackFloat = value; - mPutbackLoc = loc; - } + mPutbackLoc = loc; + } void Scanner::putbackName (const std::string& name, const TokenLoc& loc) { mPutback = Putback_Name; mPutbackName = name; - mPutbackLoc = loc; - } + mPutbackLoc = loc; + } void Scanner::putbackKeyword (int keyword, const TokenLoc& loc) { mPutback = Putback_Keyword; mPutbackCode = keyword; - mPutbackLoc = loc; - } + mPutbackLoc = loc; + } } -