diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index f44f61b55..59cb70729 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -846,7 +846,7 @@ void AstNode::dump(std::ostream& str) { } if (name()!="") { if (VN_IS(this, Const)) str<<" "<>6)&3, (pos[0]>>3)&7, pos[0]&7); + out += octal; + } + } + return out; +} + //---------------------------------------------------------------------- // Simple wrappers diff --git a/src/V3File.h b/src/V3File.h index 77e12ed7f..79ec34204 100644 --- a/src/V3File.h +++ b/src/V3File.h @@ -161,6 +161,8 @@ public: void blockDec() { if (!m_parenVec.empty()) m_parenVec.pop(); } // STATIC METHODS static const string indentSpaces(int num); + // Add escaped characters to strings + static string quoteNameControls(const string& namein, Language lang = LA_C); // CALLBACKS - MUST OVERRIDE virtual void putcOutput(char chr) = 0; diff --git a/src/V3Number.cpp b/src/V3Number.cpp index 38fe41325..1cfac108c 100644 --- a/src/V3Number.cpp +++ b/src/V3Number.cpp @@ -429,31 +429,6 @@ string V3Number::ascii(bool prefixed, bool cleanVerilog) const { return out.str(); } -string V3Number::quoteNameControls(const string& namein) { - // Encode control chars into C style escapes - // Reverse is V3Parse::deQuote - string out; - for (string::const_iterator pos=namein.begin(); pos!=namein.end(); ++pos) { - if (pos[0]=='\\' || pos[0]=='"') { - out += string("\\")+pos[0]; - } else if (pos[0]=='\n') { - out += "\\n"; - } else if (pos[0]=='\r') { - out += "\\r"; - } else if (pos[0]=='\t') { - out += "\\t"; - } else if (isprint(pos[0])) { - out += pos[0]; - } else { - // This will also cover \a etc - // Can't use %03o as messes up when signed - char octal[10]; sprintf(octal,"\\%o%o%o",(pos[0]>>6)&3, (pos[0]>>3)&7, pos[0]&7); - out += octal; - } - } - return out; -} - bool V3Number::displayedFmtLegal(char format) { // Is this a valid format letter? switch (tolower(format)) { diff --git a/src/V3Number.h b/src/V3Number.h index d8fa51332..59c3d89fb 100644 --- a/src/V3Number.h +++ b/src/V3Number.h @@ -195,7 +195,6 @@ public: // ACCESSORS string ascii(bool prefixed=true, bool cleanVerilog=false) const; - static string quoteNameControls(const string& namein); // Add backslash quotes to strings string displayed(AstNode* nodep, const string& vformat) const; static bool displayedFmtLegal(char format); // Is this a valid format letter? int width() const { return m_width; } diff --git a/src/verilog.y b/src/verilog.y index 6ba6c1e97..153bb1865 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -4097,7 +4097,7 @@ AstVar* V3ParseGrammar::createVariable(FileLine* fileline, string name, AstNodeR string V3ParseGrammar::deQuote(FileLine* fileline, string text) { // Fix up the quoted strings the user put in, for example "\"" becomes " - // Reverse is V3Number::quoteNameControls(...) + // Reverse is V3OutFormatter::quoteNameControls(...) bool quoted = false; string newtext; unsigned char octal_val = 0;