summaryrefslogtreecommitdiffstats
path: root/util/qlalr/cppgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util/qlalr/cppgenerator.cpp')
-rw-r--r--util/qlalr/cppgenerator.cpp71
1 files changed, 43 insertions, 28 deletions
diff --git a/util/qlalr/cppgenerator.cpp b/util/qlalr/cppgenerator.cpp
index 39d94cd..91340d2 100644
--- a/util/qlalr/cppgenerator.cpp
+++ b/util/qlalr/cppgenerator.cpp
@@ -341,8 +341,8 @@ void CppGenerator::operator () ()
}
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
{
out << copyrightHeader()
@@ -350,8 +350,16 @@ void CppGenerator::operator () ()
<< endl;
}
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << startIncludeGuard(grammar.merged_output) << endl;
+ if (copyright) {
+ out << "#if defined(Q_OS_VXWORKS) && defined(ERROR)" << endl
+ << "# undef ERROR" << endl
+ << "#endif" << endl << endl;
+ }
+
generateDecl (out);
generateImpl (out);
out << p.decls();
@@ -371,10 +379,10 @@ void CppGenerator::operator () ()
QFile f (declFileName);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
QString prot = declFileName.toUpper ().replace (QLatin1Char ('.'), QLatin1Char ('_'));
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
{
out << copyrightHeader()
@@ -382,11 +390,19 @@ void CppGenerator::operator () ()
<< endl;
}
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << "#ifndef " << prot << endl
<< "#define " << prot << endl
<< endl;
+ if (copyright) {
+ out << "#include <QtCore/qglobal.h>" << endl << endl;
+ out << "QT_BEGIN_NAMESPACE" << endl << endl;
+ }
generateDecl (out);
+ if (copyright)
+ out << "QT_END_NAMESPACE" << endl;
out << "#endif // " << prot << endl << endl;
} // end decls
@@ -395,13 +411,19 @@ void CppGenerator::operator () ()
QFile f (bitsFileName);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ // copyright headers must come first, otherwise the headers tests will fail
if (copyright)
out << copyrightHeader();
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
out << "#include \"" << declFileName << "\"" << endl << endl;
+ if (copyright)
+ out << "QT_BEGIN_NAMESPACE" << endl << endl;
generateImpl(out);
+ if (copyright)
+ out << "QT_END_NAMESPACE" << endl;
} // end bits
@@ -410,7 +432,6 @@ void CppGenerator::operator () ()
QFile f (grammar.decl_file_name);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
out << p.decls();
}
@@ -419,7 +440,6 @@ void CppGenerator::operator () ()
QFile f (grammar.impl_file_name);
f.open (QFile::WriteOnly);
QTextStream out (&f);
- out << "// This file was generated by qlalr - DO NOT EDIT!\n";
out << p.impls();
}
}
@@ -468,9 +488,9 @@ void CppGenerator::generateDecl (QTextStream &out)
<< " GOTO_CHECK_OFFSET = " << compressed_action.check.size () << endl
<< " };" << endl
<< endl
- << " static const char *const spell [];" << endl
- << " static const int lhs [];" << endl
- << " static const int rhs [];" << endl;
+ << " static const char *const spell [];" << endl
+ << " static const short lhs [];" << endl
+ << " static const short rhs [];" << endl;
if (debug_info)
{
@@ -482,24 +502,19 @@ void CppGenerator::generateDecl (QTextStream &out)
<< "#endif // " << prot << endl << endl;
}
- out << " static const int goto_default [];" << endl
- << " static const int action_default [];" << endl
- << " static const int action_index [];" << endl
- << " static const int action_info [];" << endl
- << " static const int action_check [];" << endl
+ out << " static const short goto_default [];" << endl
+ << " static const short action_default [];" << endl
+ << " static const short action_index [];" << endl
+ << " static const short action_info [];" << endl
+ << " static const short action_check [];" << endl
<< endl
<< " static inline int nt_action (int state, int nt)" << endl
<< " {" << endl
- << " const int *const goto_index = &action_index [GOTO_INDEX_OFFSET];" << endl
- << " const int *const goto_check = &action_check [GOTO_CHECK_OFFSET];" << endl
- << endl
- << " const int yyn = goto_index [state] + nt;" << endl
- << endl
- << " if (yyn < 0 || goto_check [yyn] != nt)" << endl
+ << " const int yyn = action_index [GOTO_INDEX_OFFSET + state] + nt;" << endl
+ << " if (yyn < 0 || action_check [GOTO_CHECK_OFFSET + yyn] != nt)" << endl
<< " return goto_default [nt];" << endl
<< endl
- << " const int *const goto_info = &action_info [GOTO_INFO_OFFSET];" << endl
- << " return goto_info [yyn];" << endl
+ << " return action_info [GOTO_INFO_OFFSET + yyn];" << endl
<< " }" << endl
<< endl
<< " static inline int t_action (int state, int token)" << endl
@@ -567,7 +582,7 @@ void CppGenerator::generateImpl (QTextStream &out)
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::lhs [] = {";
+ out << "const short " << grammar.table_name << "::lhs [] = {";
idx = 0;
for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
{
@@ -581,7 +596,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << ":: rhs[] = {";
+ out << "const short " << grammar.table_name << "::rhs [] = {";
idx = 0;
for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
{
@@ -636,7 +651,7 @@ void CppGenerator::generateImpl (QTextStream &out)
<< "#endif // " << prot << endl << endl;
}
- out << "const int " << grammar.table_name << "::action_default [] = {";
+ out << "const short " << grammar.table_name << "::action_default [] = {";
idx = 0;
for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state, ++idx)
{
@@ -653,7 +668,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::goto_default [] = {";
+ out << "const short " << grammar.table_name << "::goto_default [] = {";
for (int i = 0; i < defgoto.size (); ++i)
{
if (i)
@@ -666,7 +681,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_index [] = {";
+ out << "const short " << grammar.table_name << "::action_index [] = {";
for (int i = 0; i < compressed_action.index.size (); ++i)
{
if (! (i % 10))
@@ -687,7 +702,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_info [] = {";
+ out << "const short " << grammar.table_name << "::action_info [] = {";
for (int i = 0; i < compressed_action.info.size (); ++i)
{
if (! (i % 10))
@@ -708,7 +723,7 @@ void CppGenerator::generateImpl (QTextStream &out)
}
out << "};" << endl << endl;
- out << "const int " << grammar.table_name << "::action_check [] = {";
+ out << "const short " << grammar.table_name << "::action_check [] = {";
for (int i = 0; i < compressed_action.check.size (); ++i)
{
if (! (i % 10))