From c6110b36dc1c7b7de8d10a3875ab34ddee6dac3c Mon Sep 17 00:00:00 2001 From: helly Date: Fri, 28 Nov 2008 11:50:16 +0000 Subject: [PATCH] - Simplify unescape/xlat usage --- re2c/actions.cc | 25 +++++++++++++------------ re2c/code.cc | 2 +- re2c/scanner.h | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/re2c/actions.cc b/re2c/actions.cc index f41fedc2..2621f653 100644 --- a/re2c/actions.cc +++ b/re2c/actions.cc @@ -711,7 +711,7 @@ uint Scanner::unescape(SubStr &s) const } } -std::string& Scanner::unescape(SubStr& str_in, std::string& str_out, bool translate) const +std::string& Scanner::unescape(SubStr& str_in, std::string& str_out) const { str_out.clear(); @@ -724,7 +724,7 @@ std::string& Scanner::unescape(SubStr& str_in, std::string& str_out, bool transl fatal(str_in.ofs(), "Illegal character"); } - str_out += static_cast(translate ? xlat(c) : c); + str_out += static_cast(c); } return str_out; @@ -774,7 +774,8 @@ Range * Scanner::getRange(SubStr &s) const RegExp * Scanner::matchChar(uint c) const { - return new MatchOp(new Range(c, c + 1)); + uint xc = xlat(c); + return new MatchOp(new Range(xc, xc + 1)); } RegExp * Scanner::strToRE(SubStr s) const @@ -785,10 +786,10 @@ RegExp * Scanner::strToRE(SubStr s) const if (s.len == 0) return new NullOp; - RegExp *re = matchChar(xlat(unescape(s))); + RegExp *re = matchChar(unescape(s)); while (s.len > 0) - re = new CatOp(re, matchChar(xlat(unescape(s)))); + re = new CatOp(re, matchChar(unescape(s))); return re; } @@ -807,13 +808,13 @@ RegExp * Scanner::strToCaseInsensitiveRE(SubStr s) const if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { - reL = matchChar(xlat(tolower(c))); - reU = matchChar(xlat(toupper(c))); + reL = matchChar(tolower(c)); + reU = matchChar(toupper(c)); re = mkAlt(reL, reU); } else { - re = matchChar(xlat(c)); + re = matchChar(c); } while (s.len > 0) @@ -822,13 +823,13 @@ RegExp * Scanner::strToCaseInsensitiveRE(SubStr s) const if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { - reL = matchChar(xlat(tolower(c))); - reU = matchChar(xlat(toupper(c))); + reL = matchChar(tolower(c)); + reU = matchChar(toupper(c)); re = new CatOp(re, mkAlt(reL, reU)); } else { - re = new CatOp(re, matchChar(xlat(c))); + re = new CatOp(re, matchChar(c)); } } @@ -887,7 +888,7 @@ RegExp * Scanner::invToRE(SubStr s) const RegExp * Scanner::mkDot() const { RegExp * any = getAnyRE(); - RegExp * ran = matchChar(xlat('\n')); + RegExp * ran = matchChar('\n'); RegExp * inv = mkDiff(any, ran); delete ran; diff --git a/re2c/code.cc b/re2c/code.cc index d7438951..e7fa10f2 100644 --- a/re2c/code.cc +++ b/re2c/code.cc @@ -2300,7 +2300,7 @@ void Scanner::config(const Str& cfg, const Str& val) && (val.str[0] == '"' || val.str[0] == '\'')) { SubStr tmp(val.str + 1, val.len - 2); - unescape(tmp, strVal, false); + unescape(tmp, strVal); } else { diff --git a/re2c/scanner.h b/re2c/scanner.h index 82b48d50..3e59d3a0 100644 --- a/re2c/scanner.h +++ b/re2c/scanner.h @@ -72,7 +72,7 @@ public: uint xlat(uint c) const; uint unescape(SubStr &s) const; - std::string& unescape(SubStr& str_in, std::string& str_out, bool translate) const; + std::string& unescape(SubStr& str_in, std::string& str_out) const; Range * getRange(SubStr &s) const; RegExp * matchChar(uint c) const; -- 2.40.0