diff options
author | Liang Qi <liang.qi@qt.io> | 2018-05-08 20:43:45 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-05-08 20:43:45 +0200 |
commit | b5a956601f369e961d6863126f8facc61bb6df1f (patch) | |
tree | 25e4021518b254ef76c410244dd6581432bf285f /src/tools | |
parent | 290f953253afc5935382525cd4b72e091865cab5 (diff) | |
parent | 1b7337d23dbc767ba482d9051180f10d77052913 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
tests/auto/corelib/io/qresourceengine/qresourceengine_test.pro
Change-Id: I3169f709cc2a1b75007cb23c02c4c79b74feeb04
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/qlalr/cppgenerator.cpp | 12 | ||||
-rw-r--r-- | src/tools/qlalr/lalr.cpp | 53 | ||||
-rw-r--r-- | src/tools/qlalr/lalr.g | 14 | ||||
-rw-r--r-- | src/tools/qlalr/lalr.h | 5 | ||||
-rw-r--r-- | src/tools/qlalr/main.cpp | 12 | ||||
-rw-r--r-- | src/tools/qlalr/recognizer.cpp | 14 |
6 files changed, 59 insertions, 51 deletions
diff --git a/src/tools/qlalr/cppgenerator.cpp b/src/tools/qlalr/cppgenerator.cpp index ed0f53d43e..b14c73a8fe 100644 --- a/src/tools/qlalr/cppgenerator.cpp +++ b/src/tools/qlalr/cppgenerator.cpp @@ -186,7 +186,7 @@ void CppGenerator::operator () () else if (u < 0) { if (verbose) - qout << "*** Warning. Found a reduce/reduce conflict in state " << q << " on token ``" << s << "'' between rule " + qout() << "*** Warning. Found a reduce/reduce conflict in state " << q << " on token ``" << s << "'' between rule " << r << " and " << -u << endl; ++reduce_reduce_conflict_count; @@ -194,7 +194,7 @@ void CppGenerator::operator () () u = qMax (u, -r); if (verbose) - qout << "\tresolved using rule " << -u << endl; + qout() << "\tresolved using rule " << -u << endl; } else if (u > 0) @@ -227,7 +227,7 @@ void CppGenerator::operator () () ++shift_reduce_conflict_count; if (verbose) - qout << "*** Warning. Found a shift/reduce conflict in state " << q << " on token ``" << s << "'' with rule " << r << endl; + qout() << "*** Warning. Found a shift/reduce conflict in state " << q << " on token ``" << s << "'' with rule " << r << endl; } } } @@ -238,10 +238,10 @@ void CppGenerator::operator () () { if (shift_reduce_conflict_count != grammar.expected_shift_reduce || reduce_reduce_conflict_count != grammar.expected_reduce_reduce) - qerr << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl; + qerr() << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl; if (verbose) - qout << endl << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl + qout() << endl << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl << endl; } @@ -266,7 +266,7 @@ void CppGenerator::operator () () RulePointer rule = grammar.rules.begin () + i; if (rule != grammar.goal) - qerr << "*** Warning: Rule ``" << *rule << "'' is useless!" << endl; + qerr() << "*** Warning: Rule ``" << *rule << "'' is useless!" << endl; } } diff --git a/src/tools/qlalr/lalr.cpp b/src/tools/qlalr/lalr.cpp index 0ccf4c1588..00597d1379 100644 --- a/src/tools/qlalr/lalr.cpp +++ b/src/tools/qlalr/lalr.cpp @@ -40,8 +40,17 @@ #define QLALR_NO_DEBUG_LOOKAHEADS QT_BEGIN_NAMESPACE -QTextStream qerr (stderr, QIODevice::WriteOnly); -QTextStream qout (stdout, QIODevice::WriteOnly); +QTextStream &qerr() +{ + static QTextStream result(stderr, QIODevice::WriteOnly); + return result; +} + +QTextStream &qout() +{ + static QTextStream result(stdout, QIODevice::WriteOnly); + return result; +} bool operator < (Name a, Name b) { @@ -303,7 +312,7 @@ void Automaton::buildNullables () } #ifndef QLALR_NO_DEBUG_NULLABLES - qerr << "nullables = {" << nullables << endl; + qerr() << "nullables = {" << nullables << endl; #endif } @@ -446,7 +455,7 @@ void Automaton::buildLookbackSets () lookbacks.insert (item, Lookback (p, A)); #ifndef QLALR_NO_DEBUG_LOOKBACKS - qerr << "*** (" << id (q) << ", " << *rule << ") lookback (" << id (p) << ", " << *A << ")" << endl; + qerr() << "*** (" << id (q) << ", " << *rule << ") lookback (" << id (p) << ", " << *A << ")" << endl; #endif } } @@ -477,7 +486,7 @@ void Automaton::buildDirectReads () #ifndef QLALR_NO_DEBUG_DIRECT_READS for (QMap<Name, NameSet>::iterator dr = q->reads.begin (); dr != q->reads.end (); ++dr) - qerr << "*** DR(" << id (q) << ", " << dr.key () << ") = " << dr.value () << endl; + qerr() << "*** DR(" << id (q) << ", " << dr.key () << ") = " << dr.value () << endl; #endif } } @@ -506,11 +515,11 @@ void Automaton::buildReadsDigraph () source->insertEdge (target); #ifndef QLALR_NO_DEBUG_READS - qerr << "*** "; - dump (qerr, source); - qerr << " reads "; - dump (qerr, target); - qerr << endl; + qerr() << "*** "; + dump (qerr(), source); + qerr() << " reads "; + dump (qerr(), target); + qerr() << endl; #endif } } @@ -545,7 +554,7 @@ void Automaton::visitReadNode (ReadNode node) _M_reads_stack.push (node); #ifndef QLALR_NO_DEBUG_INCLUDES - // qerr << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl; + // qerr() << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl; #endif for (ReadsGraph::edge_iterator edge = node->begin (); edge != node->end (); ++edge) @@ -625,7 +634,7 @@ void Automaton::buildIncludesDigraph () source->insertEdge (target); #ifndef QLALR_NO_DEBUG_INCLUDES - qerr << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl; + qerr() << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl; #endif // QLALR_NO_DEBUG_INCLUDES continue; @@ -647,7 +656,7 @@ void Automaton::buildIncludesDigraph () source->insertEdge (target); #ifndef QLALR_NO_DEBUG_INCLUDES - qerr << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl; + qerr() << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl; #endif // QLALR_NO_DEBUG_INCLUDES } } @@ -664,7 +673,7 @@ void Automaton::visitIncludeNode (IncludeNode node) _M_includes_stack.push (node); #ifndef QLALR_NO_DEBUG_INCLUDES - // qerr << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl; + // qerr() << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl; #endif for (IncludesGraph::edge_iterator edge = node->begin (); edge != node->end (); ++edge) @@ -676,11 +685,11 @@ void Automaton::visitIncludeNode (IncludeNode node) node->dfn = qMin (N, r->dfn); #ifndef QLALR_NO_DEBUG_INCLUDES - qerr << "*** Merge. follows"; - dump (qerr, node); - qerr << " += follows"; - dump (qerr, r); - qerr << endl; + qerr() << "*** Merge. follows"; + dump (qerr(), node); + qerr() << " += follows"; + dump (qerr(), r); + qerr() << endl; #endif NameSet &dst = node->data.state->follows [node->data.nt]; @@ -714,9 +723,9 @@ void Automaton::buildLookaheads () StatePointer q = lookback.state; #ifndef QLALR_NO_DEBUG_LOOKAHEADS - qerr << "(" << id (p) << ", " << *item->rule << ") lookbacks "; - dump (qerr, lookback); - qerr << " with follows (" << id (q) << ", " << lookback.nt << ") = " << q->follows [lookback.nt] << endl; + qerr() << "(" << id (p) << ", " << *item->rule << ") lookbacks "; + dump (qerr(), lookback); + qerr() << " with follows (" << id (q) << ", " << lookback.nt << ") = " << q->follows [lookback.nt] << endl; #endif lookaheads [item].insert (q->follows [lookback.nt].begin (), q->follows [lookback.nt].end ()); diff --git a/src/tools/qlalr/lalr.g b/src/tools/qlalr/lalr.g index 5e335c5a3b..05d30c21fd 100644 --- a/src/tools/qlalr/lalr.g +++ b/src/tools/qlalr/lalr.g @@ -261,7 +261,7 @@ int Recognizer::nextToken() if (ch == QLatin1Char ('"')) inp (); else - qerr << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl; _M_current_value = text; return (token = STRING_LITERAL); @@ -314,7 +314,7 @@ int Recognizer::nextToken() return (token = PREC); else { - qerr << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl; exit (EXIT_FAILURE); return (token = ERROR); } @@ -439,7 +439,7 @@ bool Recognizer::parse (const QString &input_file) QFile file(_M_input_file); if (! file.open(QFile::ReadOnly)) { - qerr << "qlalr: no input file\n"; + qerr() << "qlalr: no input file\n"; return false; } @@ -659,7 +659,7 @@ case $rule_number: { if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ()) { - qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; return false; } @@ -683,7 +683,7 @@ case $rule_number: { if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ()) { - qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; return false; } @@ -712,7 +712,7 @@ case $rule_number: { Name tok = _M_grammar->intern (sym(2)); if (! _M_grammar->isTerminal (tok)) { - qerr << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl; + qerr() << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl; _M_current_rule->prec = _M_grammar->names.end (); } else @@ -758,7 +758,7 @@ case $rule_number: { } } - qerr << _M_input_file << ":" << _M_line << ": Syntax error" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Syntax error" << endl; return false; } diff --git a/src/tools/qlalr/lalr.h b/src/tools/qlalr/lalr.h index b303b897d4..6a2baaa462 100644 --- a/src/tools/qlalr/lalr.h +++ b/src/tools/qlalr/lalr.h @@ -501,9 +501,8 @@ QTextStream &operator << (QTextStream &out, const Item &item); QTextStream &operator << (QTextStream &out, const NameSet &ns); QT_BEGIN_NAMESPACE -// ... hmm -extern QTextStream qerr; -extern QTextStream qout; +QTextStream &qerr(); +QTextStream &qout(); QT_END_NAMESPACE #endif // LALR_H diff --git a/src/tools/qlalr/main.cpp b/src/tools/qlalr/main.cpp index c16bdcdf17..5971eb201d 100644 --- a/src/tools/qlalr/main.cpp +++ b/src/tools/qlalr/main.cpp @@ -44,7 +44,7 @@ static void help_me () { - qerr << "Usage: qlalr [options] [input file name]" << endl + qerr() << "Usage: qlalr [options] [input file name]" << endl << endl << " --help, -h\t\tdisplay this help and exit" << endl << " --verbose, -v\t\tverbose output" << endl @@ -91,7 +91,7 @@ int main (int argc, char *argv[]) file_name = arg; else - qerr << "*** Warning. Ignore argument `" << arg << "'" << endl; + qerr() << "*** Warning. Ignore argument `" << arg << "'" << endl; } if (file_name.isEmpty ()) @@ -108,13 +108,13 @@ int main (int argc, char *argv[]) if (grammar.rules.isEmpty ()) { - qerr << "*** Fatal. No rules!" << endl; + qerr() << "*** Fatal. No rules!" << endl; exit (EXIT_FAILURE); } else if (grammar.start == grammar.names.end ()) { - qerr << "*** Fatal. No start symbol!" << endl; + qerr() << "*** Fatal. No start symbol!" << endl; exit (EXIT_FAILURE); } @@ -131,13 +131,13 @@ int main (int argc, char *argv[]) if (generate_dot) { - DotGraph genDotFile (qout); + DotGraph genDotFile (qout()); genDotFile (&aut); } else if (generate_report) { - ParseTable genParseTable (qout); + ParseTable genParseTable (qout()); genParseTable(&aut); } diff --git a/src/tools/qlalr/recognizer.cpp b/src/tools/qlalr/recognizer.cpp index 8c7665f1b9..ab797c85d0 100644 --- a/src/tools/qlalr/recognizer.cpp +++ b/src/tools/qlalr/recognizer.cpp @@ -97,7 +97,7 @@ int Recognizer::nextToken() if (ch == QLatin1Char ('"')) inp (); else - qerr << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl; _M_current_value = text; return (token = STRING_LITERAL); @@ -150,7 +150,7 @@ int Recognizer::nextToken() return (token = PREC); else { - qerr << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl; exit (EXIT_FAILURE); return (token = ERROR); } @@ -275,7 +275,7 @@ bool Recognizer::parse (const QString &input_file) QFile file(_M_input_file); if (! file.open(QFile::ReadOnly)) { - qerr << "qlalr: no input file\n"; + qerr() << "qlalr: no input file\n"; return false; } @@ -405,7 +405,7 @@ case 34: { if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ()) { - qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; return false; } @@ -420,7 +420,7 @@ case 38: { if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ()) { - qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl; return false; } @@ -443,7 +443,7 @@ case 40: { Name tok = _M_grammar->intern (sym(2)); if (! _M_grammar->isTerminal (tok)) { - qerr << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl; + qerr() << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl; _M_current_rule->prec = _M_grammar->names.end (); } else @@ -474,7 +474,7 @@ case 43: { } } - qerr << _M_input_file << ":" << _M_line << ": Syntax error" << endl; + qerr() << _M_input_file << ":" << _M_line << ": Syntax error" << endl; return false; } |