[kdevelop-pg-qt] pull in upstream commits, .spec cleanup
Rex Dieter
rdieter at fedoraproject.org
Wed Jun 11 03:21:47 UTC 2014
commit a5a6c56576f159636b37ed4ab088e8d759f30b85
Author: Rex Dieter <rdieter at math.unl.edu>
Date: Tue Jun 10 22:21:47 2014 -0500
pull in upstream commits, .spec cleanup
...t-LIB_INSTALL_DIR-even-with-no-KDE4-stuff.patch | 24 +
0002-Some-std-string-support-in-iterators.patch | 117 +
0003-bugfix-inserting-user-generated-code.patch | 27 +
...add-CTest-CDash-config-for-KDevelop-PG-Qt.patch | 80 +
0005-force-building-of-unit-tests.patch | 24 +
...it-array-implementation-and-replaced-vect.patch | 324 +++
...handling-of-overflows-in-TokenStream-read.patch | 62 +
0009-Updated-generated-files.patch | 2327 ++++++++++++++++++++
0010-version-strings.patch | 50 +
0011-fix-some-warnings.patch | 53 +
0012-updated-generated-files.patch | 39 +
0013-Fix-some-clang-compiler-warnings.patch | 48 +
...e-with-clang-also-enable-exceptions-there.patch | 29 +
...11-std-c-0x-to-fix-build-on-build.kde.org.patch | 26 +
0016-Make-it-possible-to-build-without-tests.patch | 26 +
0017-CMake-Fix-printing-of-empty-lines.patch | 29 +
kdevelop-pg-qt.spec | 37 +-
17 files changed, 3308 insertions(+), 14 deletions(-)
---
diff --git a/0001-set-LIB_INSTALL_DIR-even-with-no-KDE4-stuff.patch b/0001-set-LIB_INSTALL_DIR-even-with-no-KDE4-stuff.patch
new file mode 100644
index 0000000..7ee6ddb
--- /dev/null
+++ b/0001-set-LIB_INSTALL_DIR-even-with-no-KDE4-stuff.patch
@@ -0,0 +1,24 @@
+From f9d0d07970535d58d14b437930174163a6d5df1f Mon Sep 17 00:00:00 2001
+From: Pino Toscano <pino at kde.org>
+Date: Tue, 27 Mar 2012 13:02:50 +0200
+Subject: [PATCH 01/17] set LIB_INSTALL_DIR even with no KDE4 stuff
+
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6edf2d7..28f256c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,7 @@ if(NOT KDE4_FOUND)
+ cmake_policy(SET CMP0002 OLD)
+ find_package(Qt4)
+ set(DATA_INSTALL_DIR share)
++ set(LIB_INSTALL_DIR lib)
+ endif(NOT KDE4_FOUND)
+
+ # Use colored output (since cmake 2.4.0)
+--
+1.9.3
+
diff --git a/0002-Some-std-string-support-in-iterators.patch b/0002-Some-std-string-support-in-iterators.patch
new file mode 100644
index 0000000..c970f07
--- /dev/null
+++ b/0002-Some-std-string-support-in-iterators.patch
@@ -0,0 +1,117 @@
+From 4de3db2b1ea17ee75cec08bdde92f8923e6a55d3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Thu, 12 Apr 2012 18:26:18 +0200
+Subject: [PATCH 02/17] Some std::string support in iterators
+
+---
+ include/kdev-pg-char-sets.h | 30 ++++++++++++++++++++----------
+ kdev-pg/kdev-pg-regexp.h | 2 --
+ 2 files changed, 20 insertions(+), 12 deletions(-)
+
+diff --git a/include/kdev-pg-char-sets.h b/include/kdev-pg-char-sets.h
+index 79be3ad..5b2b428 100644
+--- a/include/kdev-pg-char-sets.h
++++ b/include/kdev-pg-char-sets.h
+@@ -21,6 +21,7 @@
+ #ifndef KDEV_PG_CHAR_SETS
+ #define KDEV_PG_CHAR_SETS
+
++#include <string>
+ #include <iostream>
+ #include <vector>
+ #include <set>
+@@ -242,14 +243,15 @@ public:
+ }
+ };
+
+-class QByteArrayIterator
++template<typename String>
++class ByteStringIterator
+ {
+- QByteArray::const_iterator _begin, iter, end;
++ typename String::const_iterator _begin, iter, end;
+ public:
+ typedef uchar Int;
+ typedef uchar InputInt;
+- typedef QByteArray::const_iterator PlainIterator;
+- QByteArrayIterator(const QByteArray& str) : _begin(str.begin()), iter(str.begin()), end(str.end())
++ typedef typename String::const_iterator PlainIterator;
++ ByteStringIterator(const String& str) : _begin(str.begin()), iter(str.begin()), end(str.end())
+ {
+
+ }
+@@ -261,7 +263,7 @@ public:
+ {
+ return iter != end;
+ }
+- ptrdiff_t operator-(const QByteArrayIterator& other) const
++ ptrdiff_t operator-(const ByteStringIterator& other) const
+ {
+ return iter - other.iter;
+ }
+@@ -275,6 +277,9 @@ public:
+ }
+ };
+
++typedef ByteStringIterator<QByteArray> QByteArrayIterator;
++typedef ByteStringIterator<string> StdStringIterator;
++
+ class QUtf16ToUcs4Iterator
+ {
+ union { QChar const *ptr; quint16 const *raw; };
+@@ -313,14 +318,17 @@ public:
+ }
+ };
+
+-class QUtf8ToUcs4Iterator
++template<typename String>
++class Utf8ToUcs4Iterator
+ {
+- uchar const *_begin, *ptr, *end;
++public:
++ typedef typename String::const_iterator PlainIterator;
++private:
++ PlainIterator _begin, ptr, end;
+ public:
+ typedef quint32 Int;
+ typedef uchar InputInt;
+- typedef InputInt const* PlainIterator;
+- QUtf8ToUcs4Iterator(const QByteArray& qba) : _begin(reinterpret_cast<uchar const*>(qba.data())), ptr(_begin), end(ptr + qba.size())
++ Utf8ToUcs4Iterator(const String& str) : _begin(str.begin()), ptr(_begin), end(ptr + str.size())
+ {
+
+ }
+@@ -391,7 +399,7 @@ public:
+ {
+ return ptr != end;
+ }
+- ptrdiff_t operator-(const QUtf8ToUcs4Iterator& other) const
++ ptrdiff_t operator-(const String& other) const
+ {
+ return ptr - other.ptr;
+ }
+@@ -401,6 +409,8 @@ public:
+ }
+ };
+
++typedef Utf8ToUcs4Iterator<QByteArray> QUtf8ToUcs4Iterator;
++typedef Utf8ToUcs4Iterator<string> StdStringUtf8ToUcs4Iterator;
+
+ class QUtf8ToUcs2Iterator
+ {
+diff --git a/kdev-pg/kdev-pg-regexp.h b/kdev-pg/kdev-pg-regexp.h
+index 4c7e1dd..a3749fc 100644
+--- a/kdev-pg/kdev-pg-regexp.h
++++ b/kdev-pg/kdev-pg-regexp.h
+@@ -23,8 +23,6 @@
+ #include <kdev-pg-char-sets.h>
+
+ #include <vector>
+-#include <set>
+-#include <map>
+ #include <algorithm>
+ #include <stack>
+ #include <string>
+--
+1.9.3
+
diff --git a/0003-bugfix-inserting-user-generated-code.patch b/0003-bugfix-inserting-user-generated-code.patch
new file mode 100644
index 0000000..3f5d16f
--- /dev/null
+++ b/0003-bugfix-inserting-user-generated-code.patch
@@ -0,0 +1,27 @@
+From 19bead3c2e202c6c5b6ce4def64a1ba1286f0b80 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Thu, 12 Apr 2012 18:36:18 +0200
+Subject: [PATCH 03/17] bugfix: inserting user generated code
+
+---
+ kdev-pg/kdev-pg-generate.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/kdev-pg/kdev-pg-generate.cpp b/kdev-pg/kdev-pg-generate.cpp
+index d53f0e3..97dfd1c 100644
+--- a/kdev-pg/kdev-pg-generate.cpp
++++ b/kdev-pg/kdev-pg-generate.cpp
+@@ -608,7 +608,9 @@ void generateLexer()
+ s << "\n// user defined code:" << endl; \
+ GenerateMemberCode gen(s, Settings::MemberItem::PublicDeclaration \
+ | Settings::MemberItem::ProtectedDeclaration \
+- | Settings::MemberItem::PrivateDeclaration); \
++ | Settings::MemberItem::PrivateDeclaration \
++ | Settings::MemberItem::ConstructorCode \
++ | Settings::MemberItem::DestructorCode); \
+ for( auto it = globalSystem.lexerclassMembers.name.begin(); \
+ it != globalSystem.lexerclassMembers.name.end(); ++it ) \
+ { \
+--
+1.9.3
+
diff --git a/0004-add-CTest-CDash-config-for-KDevelop-PG-Qt.patch b/0004-add-CTest-CDash-config-for-KDevelop-PG-Qt.patch
new file mode 100644
index 0000000..6da7371
--- /dev/null
+++ b/0004-add-CTest-CDash-config-for-KDevelop-PG-Qt.patch
@@ -0,0 +1,80 @@
+From a07bf1d9961f37cf17f2479c5aca6f2e155815e3 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <mail at milianw.de>
+Date: Mon, 16 Apr 2012 14:54:47 +0200
+Subject: [PATCH 04/17] add CTest/CDash config for KDevelop-PG-Qt
+
+---
+ CMakeLists.txt | 6 ++++++
+ CTestConfig.cmake | 13 +++++++++++++
+ CTestCustom.cmake | 25 +++++++++++++++++++++++++
+ 3 files changed, 44 insertions(+)
+ create mode 100644 CTestConfig.cmake
+ create mode 100644 CTestCustom.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 28f256c..121ad3d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -49,3 +49,9 @@ if(KDE4_FOUND)
+ enable_testing()
+ add_subdirectory(tests)
+ endif(KDE4_FOUND)
++
++include(CTest)
++
++# CTestCustom.cmake has to be in the CTEST_BINARY_DIR.
++# in the KDE build system, this is the same as CMAKE_BINARY_DIR.
++configure_file(${CMAKE_SOURCE_DIR}/CTestCustom.cmake ${CMAKE_BINARY_DIR}/CTestCustom.cmake)
+diff --git a/CTestConfig.cmake b/CTestConfig.cmake
+new file mode 100644
+index 0000000..308388b
+--- /dev/null
++++ b/CTestConfig.cmake
+@@ -0,0 +1,13 @@
++## This file should be placed in the root directory of your project.
++## Then modify the CMakeLists.txt file in the root directory of your
++## project to incorporate the testing dashboard.
++## # The following are required to uses Dart and the Cdash dashboard
++## ENABLE_TESTING()
++## INCLUDE(CTest)
++set(CTEST_PROJECT_NAME "KDevelop-PG-Qt")
++set(CTEST_NIGHTLY_START_TIME "00:05:00 EST")
++
++set(CTEST_DROP_METHOD "http")
++set(CTEST_DROP_SITE "my.cdash.org")
++set(CTEST_DROP_LOCATION "/submit.php?project=KDevelop-PG-Qt")
++set(CTEST_DROP_SITE_CDASH TRUE)
+diff --git a/CTestCustom.cmake b/CTestCustom.cmake
+new file mode 100644
+index 0000000..a1b0a23
+--- /dev/null
++++ b/CTestCustom.cmake
+@@ -0,0 +1,25 @@
++# This file contains all the specific settings that will be used
++# when running 'make Experimental'
++
++# Change the maximum warnings that will be displayed
++# on the report page (default 50)
++set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 1000)
++
++# Warnings that will be ignored
++set(CTEST_CUSTOM_WARNING_EXCEPTION
++ ${CTEST_CUSTOM_WARNING_EXCEPTION}
++# "/path/to/subfolder/"
++)
++
++# Errors that will be ignored
++set(CTEST_CUSTOM_ERROR_EXCEPTION
++ ${CTEST_CUSTOM_ERROR_EXCEPTION}
++# "ICECC"
++# "Segmentation fault"
++# "GConf Error"
++# "Client failed to connect to the D-BUS daemon"
++# "Failed to connect to socket"
++ )
++
++# No coverage for these files
++set(CTEST_CUSTOM_COVERAGE_EXCLUDE ".moc$" "moc_" "ui_")
+--
+1.9.3
+
diff --git a/0005-force-building-of-unit-tests.patch b/0005-force-building-of-unit-tests.patch
new file mode 100644
index 0000000..e5fa94e
--- /dev/null
+++ b/0005-force-building-of-unit-tests.patch
@@ -0,0 +1,24 @@
+From 5e74eb9335fbfaa84323e173d081afcfdbf39800 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <mail at milianw.de>
+Date: Mon, 16 Apr 2012 15:01:58 +0200
+Subject: [PATCH 05/17] force building of unit tests
+
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 121ad3d..0ed26eb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -47,6 +47,7 @@ add_subdirectory(examples EXCLUDE_FROM_ALL)
+
+ if(KDE4_FOUND)
+ enable_testing()
++ set(KDE4_BUILD_TESTS "ON" CACHE "BOOL" "Enable building of tests" FORCE )
+ add_subdirectory(tests)
+ endif(KDE4_FOUND)
+
+--
+1.9.3
+
diff --git a/0007-Fixed-the-bit-array-implementation-and-replaced-vect.patch b/0007-Fixed-the-bit-array-implementation-and-replaced-vect.patch
new file mode 100644
index 0000000..fcfd3f7
--- /dev/null
+++ b/0007-Fixed-the-bit-array-implementation-and-replaced-vect.patch
@@ -0,0 +1,324 @@
+From 2d403c527a697e91441d2ecb94a947d04c55bafb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Sat, 13 Oct 2012 23:10:58 +0200
+Subject: [PATCH 07/17] Fixed the bit array implementation and replaced
+ vector<bool>, now it should build with gcc4.4
+
+---
+ kdev-pg/kdev-pg-bit-array.h | 104 +++++++++++++++++++++++++++++--------------
+ kdev-pg/kdev-pg-generate.cpp | 2 +-
+ kdev-pg/kdev-pg-lexer.cc | 8 ++++
+ kdev-pg/kdev-pg-lexer.ll | 8 ++++
+ kdev-pg/kdev-pg-regexp.cpp | 14 +++---
+ 5 files changed, 97 insertions(+), 39 deletions(-)
+
+diff --git a/kdev-pg/kdev-pg-bit-array.h b/kdev-pg/kdev-pg-bit-array.h
+index fd4c311..9e8c773 100644
+--- a/kdev-pg/kdev-pg-bit-array.h
++++ b/kdev-pg/kdev-pg-bit-array.h
+@@ -22,16 +22,39 @@
+
+ #include <iostream>
+ #include <cstring>
+-#include <tr1/unordered_set>
+-
+-using namespace std;
+-using namespace tr1;
++#include <unordered_set>
+
+ class BitArray
+ {
++ typedef std::size_t size_t;
+ size_t mSize;
+- unsigned char *mData;
+- friend struct ::std::tr1::hash<BitArray>;
++ union
++ {
++ unsigned char *mByte;
++ size_t *mWord;
++ };
++ friend struct ::std::hash<BitArray>;
++ enum { BPW = sizeof(size_t) * 8 }; // Bits per word
++ static inline size_t words(size_t n)
++ {
++ return (n + BPW - 1) / BPW;
++ }
++ inline size_t words() const
++ {
++ return words(mSize);
++ }
++ static inline size_t bytes(size_t n)
++ {
++ return words(n) * sizeof(size_t);
++ }
++ inline size_t bytes() const
++ {
++ return bytes(mSize);
++ }
++ inline void setZerosAtEnd()
++ {
++ mWord[words() - 1] &= ((~size_t(0)) << (BPW - mSize % BPW));
++ }
+ public:
+ struct BitRef
+ {
+@@ -41,7 +64,7 @@ public:
+ {}
+ inline operator bool() const
+ {
+- return byte & (1 << bit);
++ return (byte & (1 << bit)) == (1 << bit);
+ }
+ inline BitRef& operator=(bool val)
+ {
+@@ -51,22 +74,23 @@ public:
+ byte &= ~(1 << bit);
+ return *this;
+ }
+- inline BitRef& operator=(BitRef val)
++ inline BitRef& operator=(const BitRef& val)
+ {
+ return *this = (bool)val;
+ }
+ };
+- inline BitArray(size_t size, bool val = false) : mSize(size), mData(reinterpret_cast<unsigned char*>(malloc((size + 8 * sizeof(size_t) - 1) / 8)))
++ inline BitArray(size_t size, bool val = false) : mSize(size), mByte(reinterpret_cast<unsigned char*>(malloc(bytes())))
+ {
+- memset(mData, (val ? (~(size_t(0))) : 0), (size + 8 * sizeof(size_t) - 1) / 8);
++ memset(mByte, (val ? (~(size_t(0))) : 0), bytes());
++ setZerosAtEnd();
+ }
+- inline BitArray() : mSize(0), mData((unsigned char*)malloc(0))
++ inline BitArray() : mSize(0), mByte((unsigned char*)malloc(0))
+ {
+ }
+- inline BitArray(const BitArray& o) : mSize(o.mSize), mData(reinterpret_cast<unsigned char*>(malloc((mSize + 8 * sizeof(size_t) - 1) / 8)))
++ inline BitArray(const BitArray& o) : mSize(o.mSize), mByte(reinterpret_cast<unsigned char*>(malloc(bytes())))
+ {
+- for(size_t *i = reinterpret_cast<size_t*>(mData), *j = reinterpret_cast<size_t*>(o.mData); i != reinterpret_cast<size_t*>(mData) + (mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t); ++i, ++j)
+- *i = *j;
++ for(size_t *i = mWord, *j = o.mWord; i != mWord + words(); ++i, ++j)
++ *i = *j;
+ }
+ inline bool operator<(const BitArray& o) const
+ {
+@@ -77,18 +101,18 @@ public:
+ if(size() == 0)
+ return false;
+ size_t *i, *j;
+- for(i = reinterpret_cast<size_t*>(mData), j = reinterpret_cast<size_t*>(o.mData); i != reinterpret_cast<size_t*>(mData) + (mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t) - 1; ++i, ++j)
++ for(i = mWord, j = o.mWord; i != mWord + words(); ++i, ++j)
+ {
+ if(*i < *j)
+ return true;
+ if(*j < *i)
+ return false;
+ }
+- return (*i & (1 << (8 * sizeof(size_t) - size() % (8 * sizeof(size_t))))) < (*j & (1 << (8 * sizeof(size_t) - size() % (8 * sizeof(size_t)))));
++ return false;
+ }
+ inline ~BitArray()
+ {
+- free(mData);
++ free(mByte);
+ }
+ inline bool operator==(const BitArray& o) const
+ {
+@@ -97,12 +121,14 @@ public:
+ if(size() == 0)
+ return true;
+ size_t *i, *j;
+- for(i = reinterpret_cast<size_t*>(mData), j = reinterpret_cast<size_t*>(o.mData); i != reinterpret_cast<size_t*>(mData) + (mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t) - 1; ++i, ++j)
++ for(i = mWord, j = o.mWord; i != mWord + words(); ++i, ++j)
++ {
+ if(*i != *j)
+ return false;
+- return (*i & (1 << (8 * sizeof(size_t) - size() % (8 * sizeof(size_t))))) == (*j & (1 << (8 * sizeof(size_t) - size() % (8 * sizeof(size_t)))));
++ }
++ return true;
+ }
+- inline BitArray& operator[](const BitArray& o)
++ inline BitArray& operator=(const BitArray& o)
+ {
+ if(&o != this)
+ {
+@@ -113,19 +139,22 @@ public:
+ }
+ inline bool operator[](size_t x) const
+ {
+- return size_t(mData[x >> 3]) & (1 << (x & 7));
++ if(x > size())
++ cerr << "out of bounds" << endl;
++ return (mByte[x >> 3] & (1 << (x & 7))) == (1 << (x & 7));
+ }
+ inline BitRef operator[](size_t x)
+ {
+- return BitRef(mData[x >> 3], x & 7);
++ if(x > size())
++ cerr << "out of bounds" << endl;
++ return BitRef(mByte[x >> 3], x & 7);
+ }
+ inline void resize(size_t size)
+ {
+- mData = reinterpret_cast<unsigned char*>(realloc(mData, size / 8));
++ mByte = reinterpret_cast<unsigned char*>(realloc(mByte, bytes(size)));
+ if(size > mSize)
+ {
+- memset(reinterpret_cast<size_t*>(mData) + (mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t), 0, (size + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t) - (mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t));
+- mData[(mSize - 1) / 8 / sizeof(size_t)] &= ((~size_t(0)) << (sizeof(size_t) * 8 - mSize % (sizeof(size_t) * 8)));
++ memset(mWord + words(), 0, bytes(size) - bytes());
+ }
+ mSize = size;
+ }
+@@ -137,19 +166,28 @@ public:
+
+ namespace std
+ {
+- namespace tr1
++ template<> struct hash<BitArray>
+ {
+- template<> struct hash<BitArray>
++ inline size_t operator()(const BitArray &x) const
+ {
+- inline size_t operator()(const BitArray &x) const
++ size_t ret = 0;
++ for(size_t *i = x.mWord; i != x.mWord + x.words(); ++i)
+ {
+- size_t ret = 0;
+- for(size_t *i = reinterpret_cast<size_t*>(x.mData); i != reinterpret_cast<size_t*>(x.mData) + (x.mSize + 8 * sizeof(size_t) - 1) / 8 / sizeof(size_t); ++i)
+- ret ^= *i;
+- return ret;
++ ret ^= *i;
++ ret = (ret >> (sizeof(size_t)*8 - 17)) | (ret << 17);
+ }
+- };
++ return ret;
++ }
++ };
++}
++
++std::ostream& operator<<(std::ostream &o, const BitArray &a)
++{
++ for(size_t i = 0; i != a.size(); ++i)
++ {
++ o << (int)a[i];
+ }
++ return o;
+ }
+
+ #endif
+diff --git a/kdev-pg/kdev-pg-generate.cpp b/kdev-pg/kdev-pg-generate.cpp
+index 97dfd1c..2af2b98 100644
+--- a/kdev-pg/kdev-pg-generate.cpp
++++ b/kdev-pg/kdev-pg-generate.cpp
+@@ -659,7 +659,7 @@ void generateLexer()
+ LEXER_EXTRA_CODE_GEN(destructorCode)
+ s << "}" << endl << endl
+
+- << "#define PP_CONCAT_IMPL(x, y) x ## y\n" // necesarry, otherwise CURRENT_RULE_SET would not get resolved
++ << "#define PP_CONCAT_IMPL(x, y) x ## y\n" // necessary, otherwise CURRENT_RULE_SET would not get resolved
+ "#define PP_CONCAT(x, y) PP_CONCAT_IMPL(x, y)\n\n"
+
+ "#define lxCURR_POS (Iterator::plain())\n"
+diff --git a/kdev-pg/kdev-pg-lexer.cc b/kdev-pg/kdev-pg-lexer.cc
+index 2a84b4c..0009ccb 100644
+--- a/kdev-pg/kdev-pg-lexer.cc
++++ b/kdev-pg/kdev-pg-lexer.cc
+@@ -3391,6 +3391,14 @@ void clearLineBuffer()
+ endOfLine = false;
+ }
+
++struct InitLineBuffer
++{
++ InitLineBuffer()
++ {
++ clearLineBuffer();
++ }
++} _initLineBuffer;
++
+ /* add the current token to the current line */
+ void appendLineBuffer()
+ {
+diff --git a/kdev-pg/kdev-pg-lexer.ll b/kdev-pg/kdev-pg-lexer.ll
+index e5138aa..a0864af 100644
+--- a/kdev-pg/kdev-pg-lexer.ll
++++ b/kdev-pg/kdev-pg-lexer.ll
+@@ -393,6 +393,14 @@ void clearLineBuffer()
+ endOfLine = false;
+ }
+
++struct InitLineBuffer
++{
++ InitLineBuffer()
++ {
++ clearLineBuffer();
++ }
++} _initLineBuffer;
++
+ /* add the current token to the current line */
+ void appendLineBuffer()
+ {
+diff --git a/kdev-pg/kdev-pg-regexp.cpp b/kdev-pg/kdev-pg-regexp.cpp
+index 1066360..33293ff 100644
+--- a/kdev-pg/kdev-pg-regexp.cpp
++++ b/kdev-pg/kdev-pg-regexp.cpp
+@@ -21,9 +21,12 @@
+ #include "kdev-pg-regexp.h"
+ #include "kdev-pg.h"
+ #include "kdev-pg-regexp-helper.h"
++#include "kdev-pg-bit-array.h"
+ #include <iostream>
+ #include <queue>
+ #include <stack>
++#include <QHash>
++#include <QSet>
+ #include <unordered_set>
+ #include <unordered_map>
+
+@@ -50,11 +53,10 @@ namespace std \
+
+ q_Hash_to_tr1_hash(QBitArray)
+
+-
+ namespace KDevPG
+ {
+
+-typedef vector<bool> UsedBitArray;
++typedef BitArray UsedBitArray;
+ typedef QUtf8ToUcs4Iterator Iterator;
+ // typedef TableCharSet<Ascii> CharSet;
+
+@@ -533,8 +535,9 @@ public:
+ rules.resize(nstates);
+ return *this;
+ }
+- UsedBitArray closure(UsedBitArray s)
++ UsedBitArray closure(const UsedBitArray& states)
+ {
++ UsedBitArray s(states);
+ assert(s.size() == nstates);
+ stack<size_t> todo;
+ for(size_t i = 0; i != nstates; ++i)
+@@ -562,8 +565,9 @@ public:
+ res[i] = res[i] || b[i];
+ return res;
+ }
+- vector< pair<CharSet, UsedBitArray > > follow(UsedBitArray s)
++ vector< pair<CharSet, UsedBitArray > > follow(const UsedBitArray& states)
+ {
++ UsedBitArray s(states);
+ vector<pair<CharSet, UsedBitArray > > pr(nstates);
+ for(size_t i = 0; i != nstates; ++i)
+ {
+@@ -630,7 +634,7 @@ public:
+ }
+ DFA<CharSet> dfa()
+ {
+- unordered_set<UsedBitArray > states;
++ unordered_set<UsedBitArray> states;
+ unordered_map<UsedBitArray, vector<pair<CharSet, UsedBitArray > > > rules;
+ stack<UsedBitArray > todo;
+ UsedBitArray start(nstates);
+--
+1.9.3
+
diff --git a/0008-Fixed-handling-of-overflows-in-TokenStream-read.patch b/0008-Fixed-handling-of-overflows-in-TokenStream-read.patch
new file mode 100644
index 0000000..36ac6e0
--- /dev/null
+++ b/0008-Fixed-handling-of-overflows-in-TokenStream-read.patch
@@ -0,0 +1,62 @@
+From a3e6e709ea23e5ce1ab1c9749695ac0d0a496a58 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Mon, 29 Oct 2012 18:09:07 +0100
+Subject: [PATCH 08/17] Fixed handling of overflows in TokenStream::read() see
+ https://git.reviewboard.kde.org/r/107071/
+
+---
+ include/kdev-pg-token-stream.h | 4 ++++
+ kdev-pg/kdev-pg-token-type-gen.cpp | 15 ++++++++++++---
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/include/kdev-pg-token-stream.h b/include/kdev-pg-token-stream.h
+index 8e59d1a..0168aad 100644
+--- a/include/kdev-pg-token-stream.h
++++ b/include/kdev-pg-token-stream.h
+@@ -188,6 +188,10 @@ public:
+ */
+ inline T &read()
+ {
++ if(mIndex == size())
++ {
++ push().kind = 1000;
++ }
+ return mTokenBuffer[mIndex++];
+ }
+
+diff --git a/kdev-pg/kdev-pg-token-type-gen.cpp b/kdev-pg/kdev-pg-token-type-gen.cpp
+index 7e83174..d126ec5 100644
+--- a/kdev-pg/kdev-pg-token-type-gen.cpp
++++ b/kdev-pg/kdev-pg-token-type-gen.cpp
+@@ -31,7 +31,7 @@ public:
+ int mTokenValue;
+
+ public:
+- GenerateToken(QTextStream& o): out(o), mTokenValue(1000)
++ GenerateToken(QTextStream& o): out(o), mTokenValue(1001)
+ {}
+
+ void operator()(QPair<QString, Model::TerminalItem*> const &__it);
+@@ -40,8 +40,17 @@ public:
+ void GenerateToken::operator()(QPair<QString, Model::TerminalItem*> const &__it)
+ {
+ Model::TerminalItem *t = __it.second;
+- out << "Token_" << t->mName << " = " << mTokenValue << "," << endl;
+- ++mTokenValue;
++ out << "Token_" << t->mName << " = ";
++ if(t->mName == "EOF")
++ {
++ out << 1000;
++ }
++ else
++ {
++ out << mTokenValue;
++ ++mTokenValue;
++ }
++ out << "," << endl;
+ }
+
+ void GenerateTokenType::operator()()
+--
+1.9.3
+
diff --git a/0009-Updated-generated-files.patch b/0009-Updated-generated-files.patch
new file mode 100644
index 0000000..7c6855a
--- /dev/null
+++ b/0009-Updated-generated-files.patch
@@ -0,0 +1,2327 @@
+From a045f1060153318d5664bd3c68a3fb38cb3a7a56 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Mon, 29 Oct 2012 18:13:56 +0100
+Subject: [PATCH 09/17] Updated generated files.
+
+---
+ kdev-pg/kdev-pg-parser.cc | 1097 +++++++++++++++++++++++----------------------
+ kdev-pg/kdev-pg-parser.hh | 14 +-
+ 2 files changed, 579 insertions(+), 532 deletions(-)
+
+diff --git a/kdev-pg/kdev-pg-parser.cc b/kdev-pg/kdev-pg-parser.cc
+index 5bf574a..4636927 100644
+--- a/kdev-pg/kdev-pg-parser.cc
++++ b/kdev-pg/kdev-pg-parser.cc
+@@ -1,10 +1,8 @@
++/* A Bison parser, made by GNU Bison 2.5. */
+
+-/* A Bison parser, made by GNU Bison 2.4.1. */
+-
+-/* Skeleton implementation for Bison's Yacc-like parsers in C
++/* Bison implementation for Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+- Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -46,7 +44,7 @@
+ #define YYBISON 1
+
+ /* Bison version. */
+-#define YYBISON_VERSION "2.4.1"
++#define YYBISON_VERSION "2.5"
+
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -67,7 +65,7 @@
+
+ /* Copy the first part of user declarations. */
+
+-/* Line 189 of yacc.c */
++/* Line 268 of yacc.c */
+ #line 2 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+
+ /* This file is part of kdev-pg-qt
+@@ -116,8 +114,8 @@ QString r;
+
+
+
+-/* Line 189 of yacc.c */
+-#line 121 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
++/* Line 268 of yacc.c */
++#line 119 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
+
+ /* Enabling traces. */
+ #ifndef YYDEBUG
+@@ -220,7 +218,7 @@ QString r;
+ typedef union YYSTYPE
+ {
+
+-/* Line 214 of yacc.c */
++/* Line 293 of yacc.c */
+ #line 49 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+
+ KDevPG::Model::Node *item;
+@@ -233,8 +231,8 @@ typedef union YYSTYPE
+
+
+
+-/* Line 214 of yacc.c */
+-#line 238 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
++/* Line 293 of yacc.c */
++#line 236 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
+ } YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+@@ -245,8 +243,8 @@ typedef union YYSTYPE
+ /* Copy the second part of user declarations. */
+
+
+-/* Line 264 of yacc.c */
+-#line 250 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
++/* Line 343 of yacc.c */
++#line 248 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
+
+ #ifdef short
+ # undef short
+@@ -296,7 +294,7 @@ typedef short int yytype_int16;
+ #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+ #ifndef YY_
+-# if YYENABLE_NLS
++# if defined YYENABLE_NLS && YYENABLE_NLS
+ # if ENABLE_NLS
+ # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+ # define YY_(msgid) dgettext ("bison-runtime", msgid)
+@@ -349,11 +347,11 @@ YYID (yyi)
+ # define alloca _alloca
+ # else
+ # define YYSTACK_ALLOC alloca
+-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-# ifndef _STDLIB_H
+-# define _STDLIB_H 1
++# ifndef EXIT_SUCCESS
++# define EXIT_SUCCESS 0
+ # endif
+ # endif
+ # endif
+@@ -376,24 +374,24 @@ YYID (yyi)
+ # ifndef YYSTACK_ALLOC_MAXIMUM
+ # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+ # endif
+-# if (defined __cplusplus && ! defined _STDLIB_H \
++# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-# ifndef _STDLIB_H
+-# define _STDLIB_H 1
++# ifndef EXIT_SUCCESS
++# define EXIT_SUCCESS 0
+ # endif
+ # endif
+ # ifndef YYMALLOC
+ # define YYMALLOC malloc
+-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ # endif
+@@ -422,23 +420,7 @@ union yyalloc
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+-/* Copy COUNT objects from FROM to TO. The source and destination do
+- not overlap. */
+-# ifndef YYCOPY
+-# if defined __GNUC__ && 1 < __GNUC__
+-# define YYCOPY(To, From, Count) \
+- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+-# else
+-# define YYCOPY(To, From, Count) \
+- do \
+- { \
+- YYSIZE_T yyi; \
+- for (yyi = 0; yyi < (Count); yyi++) \
+- (To)[yyi] = (From)[yyi]; \
+- } \
+- while (YYID (0))
+-# endif
+-# endif
++# define YYCOPY_NEEDED 1
+
+ /* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+@@ -458,6 +440,26 @@ union yyalloc
+
+ #endif
+
++#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
++/* Copy COUNT objects from FROM to TO. The source and destination do
++ not overlap. */
++# ifndef YYCOPY
++# if defined __GNUC__ && 1 < __GNUC__
++# define YYCOPY(To, From, Count) \
++ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
++# else
++# define YYCOPY(To, From, Count) \
++ do \
++ { \
++ YYSIZE_T yyi; \
++ for (yyi = 0; yyi < (Count); yyi++) \
++ (To)[yyi] = (From)[yyi]; \
++ } \
++ while (YYID (0))
++# endif
++# endif
++#endif /* !YYCOPY_NEEDED */
++
+ /* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 4
+ /* YYLAST -- Last index in YYTABLE. */
+@@ -734,8 +736,8 @@ static const yytype_uint8 yyr2[] =
+ 5, 7, 6, 0, 1, 1, 1, 1, 1
+ };
+
+-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
++/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
++ Performed when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+ static const yytype_uint8 yydefact[] =
+ {
+@@ -842,8 +844,7 @@ static const yytype_int16 yypgoto[] =
+
+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+- number is the opposite. If zero, do what YYDEFACT says.
+- If YYTABLE_NINF, syntax error. */
++ number is the opposite. If YYTABLE_NINF, syntax error. */
+ #define YYTABLE_NINF -145
+ static const yytype_int16 yytable[] =
+ {
+@@ -889,6 +890,12 @@ static const yytype_int16 yytable[] =
+ 254, 194, 193, 199, 273
+ };
+
++#define yypact_value_is_default(yystate) \
++ ((yystate) == (-258))
++
++#define yytable_value_is_error(yytable_value) \
++ YYID (0)
++
+ static const yytype_uint16 yycheck[] =
+ {
+ 53, 74, 99, 106, 84, 5, 0, 3, 9, 3,
+@@ -986,9 +993,18 @@ static const yytype_uint8 yystos[] =
+
+ /* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+- Once GCC version 2 has supplanted version 1, this can go. */
++ Once GCC version 2 has supplanted version 1, this can go. However,
++ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
++ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
++ discussed. */
+
+ #define YYFAIL goto yyerrlab
++#if defined YYFAIL
++ /* This is here to suppress warnings from the GCC cpp's
++ -Wunused-macros. Normally we don't worry about that warning, but
++ some users do, and we want to make it easy for users to remove
++ YYFAIL uses, which will produce warnings from Bison 2.5. */
++#endif
+
+ #define YYRECOVERING() (!!yyerrstatus)
+
+@@ -998,7 +1014,6 @@ do \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+- yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+@@ -1040,19 +1055,10 @@ while (YYID (0))
+ #endif
+
+
+-/* YY_LOCATION_PRINT -- Print the location on the stream.
+- This macro was not mandated originally: define only if we know
+- we won't break user code: when these are the locations we know. */
++/* This macro is provided for backward compatibility. */
+
+ #ifndef YY_LOCATION_PRINT
+-# if YYLTYPE_IS_TRIVIAL
+-# define YY_LOCATION_PRINT(File, Loc) \
+- fprintf (File, "%d.%d-%d.%d", \
+- (Loc).first_line, (Loc).first_column, \
+- (Loc).last_line, (Loc).last_column)
+-# else
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+-# endif
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+ #endif
+
+
+@@ -1244,7 +1250,6 @@ int yydebug;
+ # define YYMAXDEPTH 10000
+ #endif
+
+-
+
+ #if YYERROR_VERBOSE
+
+@@ -1347,115 +1352,142 @@ yytnamerr (char *yyres, const char *yystr)
+ }
+ # endif
+
+-/* Copy into YYRESULT an error message about the unexpected token
+- YYCHAR while in state YYSTATE. Return the number of bytes copied,
+- including the terminating null byte. If YYRESULT is null, do not
+- copy anything; just return the number of bytes that would be
+- copied. As a special case, return 0 if an ordinary "syntax error"
+- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+- size calculation. */
+-static YYSIZE_T
+-yysyntax_error (char *yyresult, int yystate, int yychar)
+-{
+- int yyn = yypact[yystate];
++/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
++ about the unexpected token YYTOKEN for the state stack whose top is
++ YYSSP.
+
+- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+- return 0;
+- else
++ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
++ not large enough to hold the message. In that case, also set
++ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
++ required number of bytes is too large to store. */
++static int
++yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
++ yytype_int16 *yyssp, int yytoken)
++{
++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
++ YYSIZE_T yysize = yysize0;
++ YYSIZE_T yysize1;
++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++ /* Internationalized format string. */
++ const char *yyformat = 0;
++ /* Arguments of yyformat. */
++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++ /* Number of reported tokens (one for the "unexpected", one per
++ "expected"). */
++ int yycount = 0;
++
++ /* There are many possibilities here to consider:
++ - Assume YYFAIL is not used. It's too flawed to consider. See
++ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
++ for details. YYERROR is fine as it does not invoke this
++ function.
++ - If this state is a consistent state with a default action, then
++ the only way this function was invoked is if the default action
++ is an error action. In that case, don't check for expected
++ tokens because there are none.
++ - The only way there can be no lookahead present (in yychar) is if
++ this state is a consistent state with a default action. Thus,
++ detecting the absence of a lookahead is sufficient to determine
++ that there is no unexpected or expected token to report. In that
++ case, just report a simple "syntax error".
++ - Don't assume there isn't a lookahead just because this state is a
++ consistent state with a default action. There might have been a
++ previous inconsistent state, consistent state with a non-default
++ action, or user semantic action that manipulated yychar.
++ - Of course, the expected token list depends on states to have
++ correct lookahead information, and it depends on the parser not
++ to perform extra reductions after fetching a lookahead from the
++ scanner and before detecting a syntax error. Thus, state merging
++ (from LALR or IELR) and default reductions corrupt the expected
++ token list. However, the list is correct for canonical LR with
++ one exception: it will still contain any token that will not be
++ accepted due to an error action in a later state.
++ */
++ if (yytoken != YYEMPTY)
+ {
+- int yytype = YYTRANSLATE (yychar);
+- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+- YYSIZE_T yysize = yysize0;
+- YYSIZE_T yysize1;
+- int yysize_overflow = 0;
+- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+- int yyx;
+-
+-# if 0
+- /* This is so xgettext sees the translatable formats that are
+- constructed on the fly. */
+- YY_("syntax error, unexpected %s");
+- YY_("syntax error, unexpected %s, expecting %s");
+- YY_("syntax error, unexpected %s, expecting %s or %s");
+- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+-# endif
+- char *yyfmt;
+- char const *yyf;
+- static char const yyunexpected[] = "syntax error, unexpected %s";
+- static char const yyexpecting[] = ", expecting %s";
+- static char const yyor[] = " or %s";
+- char yyformat[sizeof yyunexpected
+- + sizeof yyexpecting - 1
+- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+- * (sizeof yyor - 1))];
+- char const *yyprefix = yyexpecting;
+-
+- /* Start YYX at -YYN if negative to avoid negative indexes in
+- YYCHECK. */
+- int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+- /* Stay within bounds of both yycheck and yytname. */
+- int yychecklim = YYLAST - yyn + 1;
+- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+- int yycount = 1;
+-
+- yyarg[0] = yytname[yytype];
+- yyfmt = yystpcpy (yyformat, yyunexpected);
+-
+- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+- {
+- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+- {
+- yycount = 1;
+- yysize = yysize0;
+- yyformat[sizeof yyunexpected - 1] = '\0';
+- break;
+- }
+- yyarg[yycount++] = yytname[yyx];
+- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+- yysize_overflow |= (yysize1 < yysize);
+- yysize = yysize1;
+- yyfmt = yystpcpy (yyfmt, yyprefix);
+- yyprefix = yyor;
+- }
++ int yyn = yypact[*yyssp];
++ yyarg[yycount++] = yytname[yytoken];
++ if (!yypact_value_is_default (yyn))
++ {
++ /* Start YYX at -YYN if negative to avoid negative indexes in
++ YYCHECK. In other words, skip the first -YYN actions for
++ this state because they are default actions. */
++ int yyxbegin = yyn < 0 ? -yyn : 0;
++ /* Stay within bounds of both yycheck and yytname. */
++ int yychecklim = YYLAST - yyn + 1;
++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++ int yyx;
++
++ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
++ && !yytable_value_is_error (yytable[yyx + yyn]))
++ {
++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++ {
++ yycount = 1;
++ yysize = yysize0;
++ break;
++ }
++ yyarg[yycount++] = yytname[yyx];
++ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++ if (! (yysize <= yysize1
++ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++ return 2;
++ yysize = yysize1;
++ }
++ }
++ }
+
+- yyf = YY_(yyformat);
+- yysize1 = yysize + yystrlen (yyf);
+- yysize_overflow |= (yysize1 < yysize);
+- yysize = yysize1;
++ switch (yycount)
++ {
++# define YYCASE_(N, S) \
++ case N: \
++ yyformat = S; \
++ break
++ YYCASE_(0, YY_("syntax error"));
++ YYCASE_(1, YY_("syntax error, unexpected %s"));
++ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
++ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
++ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
++ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
++# undef YYCASE_
++ }
+
+- if (yysize_overflow)
+- return YYSIZE_MAXIMUM;
++ yysize1 = yysize + yystrlen (yyformat);
++ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++ return 2;
++ yysize = yysize1;
+
+- if (yyresult)
+- {
+- /* Avoid sprintf, as that infringes on the user's name space.
+- Don't have undefined behavior even if the translation
+- produced a string with the wrong number of "%s"s. */
+- char *yyp = yyresult;
+- int yyi = 0;
+- while ((*yyp = *yyf) != '\0')
+- {
+- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+- {
+- yyp += yytnamerr (yyp, yyarg[yyi++]);
+- yyf += 2;
+- }
+- else
+- {
+- yyp++;
+- yyf++;
+- }
+- }
+- }
+- return yysize;
++ if (*yymsg_alloc < yysize)
++ {
++ *yymsg_alloc = 2 * yysize;
++ if (! (yysize <= *yymsg_alloc
++ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
++ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
++ return 1;
+ }
++
++ /* Avoid sprintf, as that infringes on the user's name space.
++ Don't have undefined behavior even if the translation
++ produced a string with the wrong number of "%s"s. */
++ {
++ char *yyp = *yymsg;
++ int yyi = 0;
++ while ((*yyp = *yyformat) != '\0')
++ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
++ {
++ yyp += yytnamerr (yyp, yyarg[yyi++]);
++ yyformat += 2;
++ }
++ else
++ {
++ yyp++;
++ yyformat++;
++ }
++ }
++ return 0;
+ }
+ #endif /* YYERROR_VERBOSE */
+-
+
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol. |
+@@ -1488,6 +1520,7 @@ yydestruct (yymsg, yytype, yyvaluep)
+ }
+ }
+
++
+ /* Prevent warnings from -Wmissing-prototypes. */
+ #ifdef YYPARSE_PARAM
+ #if defined __STDC__ || defined __cplusplus
+@@ -1514,10 +1547,9 @@ YYSTYPE yylval;
+ int yynerrs;
+
+
+-
+-/*-------------------------.
+-| yyparse or yypush_parse. |
+-`-------------------------*/
++/*----------.
++| yyparse. |
++`----------*/
+
+ #ifdef YYPARSE_PARAM
+ #if (defined __STDC__ || defined __C99__FUNC__ \
+@@ -1541,8 +1573,6 @@ yyparse ()
+ #endif
+ #endif
+ {
+-
+-
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+@@ -1697,7 +1727,7 @@ yybackup:
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+- if (yyn == YYPACT_NINF)
++ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+@@ -1728,8 +1758,8 @@ yybackup:
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+- if (yyn == 0 || yyn == YYTABLE_NINF)
+- goto yyerrlab;
++ if (yytable_value_is_error (yyn))
++ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+@@ -1784,49 +1814,49 @@ yyreduce:
+ {
+ case 2:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 94 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.decl = (yyvsp[(1) - (1)].str); ;}
++ { KDevPG::globalSystem.decl = (yyvsp[(1) - (1)].str); }
+ break;
+
+ case 3:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 97 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.bits += (yyvsp[(5) - (5)].str); ;}
++ { KDevPG::globalSystem.bits += (yyvsp[(5) - (5)].str); }
+ break;
+
+ case 6:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 107 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushParserClassMember((yyvsp[(2) - (2)].item)); ;}
++ { KDevPG::globalSystem.pushParserClassMember((yyvsp[(2) - (2)].item)); }
+ break;
+
+ case 7:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 109 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.bits += (yyvsp[(5) - (5)].str); ;}
++ { KDevPG::globalSystem.bits += (yyvsp[(5) - (5)].str); }
+ break;
+
+ case 8:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 111 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushLexerClassMember((yyvsp[(2) - (2)].item)); ;}
++ { KDevPG::globalSystem.pushLexerClassMember((yyvsp[(2) - (2)].item)); }
+ break;
+
+ case 9:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 113 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.lexerBits += (yyvsp[(5) - (5)].str); ;}
++ { KDevPG::globalSystem.lexerBits += (yyvsp[(5) - (5)].str); }
+ break;
+
+ case 11:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 116 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { if(KDevPG::globalSystem.hasLexer)
+ { KDevPG::checkOut << "** ERROR you have to specify the lexer-type (%table_lexer) before any lexer rules"; exit(-1); }
+@@ -1840,12 +1870,12 @@ yyreduce:
+ /* case KDevPG::SUcs4: KDevPG::GDFA::type = KDevPG::TUcs4; break; */
+ default: /* empty */;
+ }
+- ;}
++ }
+ break;
+
+ case 12:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 130 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { if(KDevPG::globalSystem.hasLexer)
+ { KDevPG::checkOut << "** ERROR you have to specify the lexer-type (%sequence_lexer) before any lexer rules"; exit(-1); }
+@@ -1859,12 +1889,12 @@ yyreduce:
+ /* case KDevPG::TUcs4: KDevPG::GDFA::type = KDevPG::SUcs4; break; */
+ default: /* empty */;
+ }
+- ;}
++ }
+ break;
+
+ case 13:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 144 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if(KDevPG::globalSystem.hasLexer)
+@@ -1891,132 +1921,132 @@ yyreduce:
+ exit(-1);
+ }
+ KDevPG::GDFA::type = KDevPG::AutomatonType(base);
+- ;}
++ }
+ break;
+
+ case 14:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 171 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.tokenStream = (yyvsp[(2) - (3)].str); ;}
++ { KDevPG::globalSystem.tokenStream = (yyvsp[(2) - (3)].str); }
+ break;
+
+ case 15:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 173 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.exportMacro = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.exportMacro = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 16:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 175 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.exportMacroHeader = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.exportMacroHeader = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 17:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 177 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.namespaceCode = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.namespaceCode = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 18:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 179 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.astCode = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.astCode = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 19:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 181 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushParserDeclarationHeader((yyvsp[(2) - (2)].str)); ;}
++ { KDevPG::globalSystem.pushParserDeclarationHeader((yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 20:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 183 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushParserBitsHeader((yyvsp[(2) - (2)].str)); ;}
++ { KDevPG::globalSystem.pushParserBitsHeader((yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 21:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 185 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushAstHeader((yyvsp[(2) - (2)].str)); ;}
++ { KDevPG::globalSystem.pushAstHeader((yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 22:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 187 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushLexerDeclarationHeader((yyvsp[(2) - (2)].str)); ;}
++ { KDevPG::globalSystem.pushLexerDeclarationHeader((yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 23:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 189 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.inputStream = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.inputStream = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 24:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 191 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushLexerBitsHeader((yyvsp[(2) - (2)].str)); ;}
++ { KDevPG::globalSystem.pushLexerBitsHeader((yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 25:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 193 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.astBaseClasses[(yyvsp[(2) - (3)].str)] = (yyvsp[(3) - (3)].str); ;}
++ { KDevPG::globalSystem.astBaseClasses[(yyvsp[(2) - (3)].str)] = (yyvsp[(3) - (3)].str); }
+ break;
+
+ case 26:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 195 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.parserBaseClass = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.parserBaseClass = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 27:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 197 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.lexerBaseClass = (yyvsp[(2) - (2)].str); ;}
++ { KDevPG::globalSystem.lexerBaseClass = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 28:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 198 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.hasLexer = true; lexerEnv = (yyvsp[(2) - (2)].str); if(KDevPG::globalSystem.lexerActions[lexerEnv].empty()) KDevPG::globalSystem.lexerActions[lexerEnv].push_back("qDebug() << \"error\"; exit(-1);"); ;}
++ { KDevPG::globalSystem.hasLexer = true; lexerEnv = (yyvsp[(2) - (2)].str); if(KDevPG::globalSystem.lexerActions[lexerEnv].empty()) KDevPG::globalSystem.lexerActions[lexerEnv].push_back("qDebug() << \"error\"; exit(-1);"); }
+ break;
+
+ case 30:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 199 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.hasLexer = true; KDevPG::loadUnicodeData(); lexerEnv = "start"; if(KDevPG::globalSystem.lexerActions["start"].empty()) KDevPG::globalSystem.lexerActions["start"].push_back("qDebug() << \"error\"; exit(-1);"); ;}
++ { KDevPG::globalSystem.hasLexer = true; KDevPG::loadUnicodeData(); lexerEnv = "start"; if(KDevPG::globalSystem.lexerActions["start"].empty()) KDevPG::globalSystem.lexerActions["start"].push_back("qDebug() << \"error\"; exit(-1);"); }
+ break;
+
+ case 32:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 204 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { KDevPG::globalSystem.regexpById[(yyvsp[(3) - (4)].str)] = (yyvsp[(1) - (4)].nfa);
+- ;}
++ }
+ break;
+
+ case 34:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 207 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if((yyvsp[(1) - (4)].nfa)->acceptsEpsilon())
+@@ -2026,12 +2056,12 @@ yyreduce:
+ QString s = QString((yyvsp[(2) - (4)].str)) + QString(r);
+ KDevPG::globalSystem.lexerEnvs[lexerEnv].push_back((yyvsp[(1) - (4)].nfa));
+ KDevPG::globalSystem.lexerActions[lexerEnv].push_back(s);
+- ;}
++ }
+ break;
+
+ case 36:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 217 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if((yyvsp[(1) - (8)].nfa)->acceptsEpsilon())
+@@ -2063,12 +2093,12 @@ yyreduce:
+ KDevPG::globalSystem.lexerEnvs[lexerEnv].push_back((yyvsp[(1) - (8)].nfa));
+ KDevPG::globalSystem.lexerActions[lexerEnv].push_back(s);
+ }
+- ;}
++ }
+ break;
+
+ case 38:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 249 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if((yyvsp[(1) - (8)].nfa)->acceptsEpsilon())
+@@ -2110,211 +2140,211 @@ yyreduce:
+ KDevPG::globalSystem.lexerEnvs[lexerEnv].push_back((yyvsp[(1) - (8)].nfa));
+ KDevPG::globalSystem.lexerActions[lexerEnv].push_back(s);
+ }
+- ;}
++ }
+ break;
+
+ case 40:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 291 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::globalSystem.lexerActions[lexerEnv][0] = QString((yyvsp[(2) - (2)].str));
+- ;}
++ }
+ break;
+
+ case 42:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 295 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::globalSystem.enteringCode[lexerEnv] = QString((yyvsp[(2) - (2)].str));
+- ;}
++ }
+ break;
+
+ case 44:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 299 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::globalSystem.leavingCode[lexerEnv] = QString((yyvsp[(2) - (2)].str));
+- ;}
++ }
+ break;
+
+ case 47:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 306 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ r = "\nlxRETURN(" + QString((yyvsp[(1) - (1)].str)) + ")\n";
+- ;}
++ }
+ break;
+
+ case 48:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 309 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ r = "\nlxCONTINUE;\n";
+- ;}
++ }
+ break;
+
+ case 49:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 312 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { r = "\nlxSKIP\n" ;}
+ break;
+
+ case 50:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 316 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) |= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) |= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 51:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 317 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 52:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 321 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) &= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) &= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 53:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 322 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 54:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 326 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) ^= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) ^= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 55:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 327 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 56:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 331 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA((yyvsp[(2) - (2)].nfa)->negate()); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA((yyvsp[(2) - (2)].nfa)->negate()); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 57:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 332 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (2)].nfa) |= KDevPG::GNFA::emptyWord()); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (2)].nfa) |= KDevPG::GNFA::emptyWord()); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 58:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 333 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 59:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 337 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa) <<= *(yyvsp[(2) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa) <<= *(yyvsp[(2) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 60:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 338 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 61:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 342 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa)); KDevPG::GNFA *tmp = new KDevPG::GNFA(*(yyvsp[(3) - (3)].nfa) <<= *(yyvsp[(1) - (3)].nfa)); **tmp; *(yyval.nfa) <<= *tmp; delete tmp; delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa)); KDevPG::GNFA *tmp = new KDevPG::GNFA(*(yyvsp[(3) - (3)].nfa) <<= *(yyvsp[(1) - (3)].nfa)); **tmp; *(yyval.nfa) <<= *tmp; delete tmp; delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 62:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 343 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 63:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 347 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(**(yyvsp[(1) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(**(yyvsp[(1) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); }
+ break;
+
+ case 64:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 348 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa)); **(yyval.nfa); *(yyval.nfa) <<= *(yyvsp[(1) - (2)].nfa); delete (yyvsp[(1) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa)); **(yyval.nfa); *(yyval.nfa) <<= *(yyvsp[(1) - (2)].nfa); delete (yyvsp[(1) - (2)].nfa); }
+ break;
+
+ case 65:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 349 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 66:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 353 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (3)].nfa)); delete (yyvsp[(2) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (3)].nfa)); delete (yyvsp[(2) - (3)].nfa); }
+ break;
+
+ case 67:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 354 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(2) - (3)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(2) - (3)].nfa); }
+ break;
+
+ case 68:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 355 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::anyChar()); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::anyChar()); }
+ break;
+
+ case 69:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 356 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); }
+ break;
+
+ case 70:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 357 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); }
+ break;
+
+ case 71:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 358 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if(!KDevPG::globalSystem.regexpById.contains((yyvsp[(1) - (1)].str)))
+@@ -2330,152 +2360,152 @@ yyreduce:
+ *regexp = KDevPG::globalSystem.dfaForNfa[regexp]->nfa();
+ }
+ (yyval.nfa) = new KDevPG::GNFA(*regexp);
+- ;}
++ }
+ break;
+
+ case 72:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 373 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::emptyWord()); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::emptyWord()); }
+ break;
+
+ case 73:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 377 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) |= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) |= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 74:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 378 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 75:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 382 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) &= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) &= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 76:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 383 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 77:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 387 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) ^= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa) ^= *(yyvsp[(3) - (3)].nfa)); delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 78:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 388 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 79:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 392 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA((yyvsp[(2) - (2)].nfa)->negate()); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA((yyvsp[(2) - (2)].nfa)->negate()); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 80:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 393 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (2)].nfa) |= KDevPG::GNFA::emptyWord()); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (2)].nfa) |= KDevPG::GNFA::emptyWord()); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 81:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 394 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 82:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 398 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa) |= *(yyvsp[(2) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); delete (yyvsp[(2) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa) |= *(yyvsp[(2) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); delete (yyvsp[(2) - (2)].nfa); }
+ break;
+
+ case 84:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 403 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa)); KDevPG::GNFA *tmp = new KDevPG::GNFA(*(yyvsp[(3) - (3)].nfa) <<= *(yyvsp[(1) - (3)].nfa)); **tmp; *(yyval.nfa) <<= *tmp; delete tmp; delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (3)].nfa)); KDevPG::GNFA *tmp = new KDevPG::GNFA(*(yyvsp[(3) - (3)].nfa) <<= *(yyvsp[(1) - (3)].nfa)); **tmp; *(yyval.nfa) <<= *tmp; delete tmp; delete (yyvsp[(1) - (3)].nfa); delete (yyvsp[(3) - (3)].nfa); }
+ break;
+
+ case 85:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 404 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 86:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 408 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(**(yyvsp[(1) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(**(yyvsp[(1) - (2)].nfa)); delete (yyvsp[(1) - (2)].nfa); }
+ break;
+
+ case 87:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 409 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa)); **(yyval.nfa); *(yyval.nfa) <<= *(yyvsp[(1) - (2)].nfa); delete (yyvsp[(1) - (2)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(1) - (2)].nfa)); **(yyval.nfa); *(yyval.nfa) <<= *(yyvsp[(1) - (2)].nfa); delete (yyvsp[(1) - (2)].nfa); }
+ break;
+
+ case 88:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 410 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(1) - (1)].nfa); }
+ break;
+
+ case 89:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 414 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (3)].nfa)); delete (yyvsp[(2) - (3)].nfa); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(*(yyvsp[(2) - (3)].nfa)); delete (yyvsp[(2) - (3)].nfa); }
+ break;
+
+ case 90:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 415 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = (yyvsp[(2) - (3)].nfa); ;}
++ { (yyval.nfa) = (yyvsp[(2) - (3)].nfa); }
+ break;
+
+ case 91:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 416 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::anyChar()); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::anyChar()); }
+ break;
+
+ case 92:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 417 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::word(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); }
+ break;
+
+ case 93:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 418 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ quint32 begin, end;
+@@ -2499,19 +2529,19 @@ yyreduce:
+ end = QChar::surrogateToUcs4(str[3], str[4]);
+ }
+ (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::range(begin, end+1));
+- ;}
++ }
+ break;
+
+ case 94:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 441 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::collection(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::collection(KDevPG::unescaped(QByteArray((yyvsp[(1) - (1)].str))))); }
+ break;
+
+ case 95:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 442 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ if(!KDevPG::globalSystem.regexpById.contains((yyvsp[(1) - (1)].str)))
+@@ -2527,335 +2557,335 @@ yyreduce:
+ *regexp = KDevPG::globalSystem.dfaForNfa[regexp]->nfa();
+ }
+ (yyval.nfa) = new KDevPG::GNFA(*regexp);
+- ;}
++ }
+ break;
+
+ case 96:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 457 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::emptyWord()); ;}
++ { (yyval.nfa) = new KDevPG::GNFA(KDevPG::GNFA::emptyWord()); }
+ break;
+
+ case 97:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 463 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::PublicDeclaration, (yyvsp[(5) - (5)].str)); ;}
++ { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::PublicDeclaration, (yyvsp[(5) - (5)].str)); }
+ break;
+
+ case 98:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 465 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::ProtectedDeclaration, (yyvsp[(5) - (5)].str)); ;}
++ { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::ProtectedDeclaration, (yyvsp[(5) - (5)].str)); }
+ break;
+
+ case 99:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 467 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::PrivateDeclaration, (yyvsp[(5) - (5)].str)); ;}
++ { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::PrivateDeclaration, (yyvsp[(5) - (5)].str)); }
+ break;
+
+ case 100:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 469 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::ConstructorCode, (yyvsp[(4) - (4)].str)); ;}
++ { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::ConstructorCode, (yyvsp[(4) - (4)].str)); }
+ break;
+
+ case 101:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 471 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::DestructorCode, (yyvsp[(4) - (4)].str)); ;}
++ { (yyval.item) = KDevPG::member(KDevPG::Settings::MemberItem::DestructorCode, (yyvsp[(4) - (4)].str)); }
+ break;
+
+ case 102:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 475 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushTerminal((yyvsp[(1) - (1)].str),(yyvsp[(1) - (1)].str)); ;}
++ { KDevPG::globalSystem.pushTerminal((yyvsp[(1) - (1)].str),(yyvsp[(1) - (1)].str)); }
+ break;
+
+ case 103:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 476 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushTerminal((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].str)); ;}
++ { KDevPG::globalSystem.pushTerminal((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].str)); }
+ break;
+
+ case 104:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 477 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushTerminal((yyvsp[(3) - (3)].str),(yyvsp[(3) - (3)].str)); ;}
++ { KDevPG::globalSystem.pushTerminal((yyvsp[(3) - (3)].str),(yyvsp[(3) - (3)].str)); }
+ break;
+
+ case 105:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 479 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushTerminal((yyvsp[(3) - (6)].str),(yyvsp[(5) - (6)].str)); ;}
++ { KDevPG::globalSystem.pushTerminal((yyvsp[(3) - (6)].str),(yyvsp[(5) - (6)].str)); }
+ break;
+
+ case 107:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 484 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.pushRule((yyvsp[(2) - (3)].item)); ;}
++ { KDevPG::globalSystem.pushRule((yyvsp[(2) - (3)].item)); }
+ break;
+
+ case 108:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 488 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::globalSystem.zero(); ;}
++ { (yyval.item) = KDevPG::globalSystem.zero(); }
+ break;
+
+ case 109:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 489 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(2) - (3)].item); ;}
++ { (yyval.item) = (yyvsp[(2) - (3)].item); }
+ break;
+
+ case 110:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 490 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 111:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 491 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 112:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 492 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::inlinedNonTerminal(KDevPG::globalSystem.pushSymbol((yyvsp[(2) - (2)].str))); ;}
++ { (yyval.item) = KDevPG::inlinedNonTerminal(KDevPG::globalSystem.pushSymbol((yyvsp[(2) - (2)].str))); }
+ break;
+
+ case 113:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 493 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::annotation((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].item), false, (yyvsp[(2) - (3)].storageType)); ;}
++ { (yyval.item) = KDevPG::annotation((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].item), false, (yyvsp[(2) - (3)].storageType)); }
+ break;
+
+ case 114:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 494 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::annotation((yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].item), true, (yyvsp[(3) - (4)].storageType)); ;}
++ { (yyval.item) = KDevPG::annotation((yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].item), true, (yyvsp[(3) - (4)].storageType)); }
+ break;
+
+ case 115:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 498 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::nonTerminal(KDevPG::globalSystem.pushSymbol((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].str)); ;}
++ { (yyval.item) = KDevPG::nonTerminal(KDevPG::globalSystem.pushSymbol((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 116:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 499 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::globalSystem.terminal((yyvsp[(1) - (1)].str)); ;}
++ { (yyval.item) = KDevPG::globalSystem.terminal((yyvsp[(1) - (1)].str)); }
+ break;
+
+ case 117:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 504 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::globalSystem.needStateManagement = true;
+ (yyval.item) = KDevPG::tryCatch((yyvsp[(3) - (4)].item), 0);
+- ;}
++ }
+ break;
+
+ case 118:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 509 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::globalSystem.needStateManagement = true;
+ (yyval.item) = KDevPG::tryCatch((yyvsp[(3) - (8)].item), (yyvsp[(7) - (8)].item));
+- ;}
++ }
+ break;
+
+ case 119:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 515 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = const_cast<char*>(""); ;}
++ { (yyval.str) = const_cast<char*>(""); }
+ break;
+
+ case 120:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 516 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
++ { (yyval.str) = (yyvsp[(1) - (1)].str); }
+ break;
+
+ case 121:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 520 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
++ { (yyval.str) = (yyvsp[(1) - (1)].str); }
+ break;
+
+ case 122:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 530 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageAstMember; ;}
++ { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageAstMember; }
+ break;
+
+ case 123:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 531 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageTemporary; ;}
++ { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageTemporary; }
+ break;
+
+ case 124:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 535 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::plus((yyvsp[(1) - (2)].item)); ;}
++ { (yyval.item) = KDevPG::plus((yyvsp[(1) - (2)].item)); }
+ break;
+
+ case 125:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 536 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::star((yyvsp[(1) - (2)].item)); ;}
++ { (yyval.item) = KDevPG::star((yyvsp[(1) - (2)].item)); }
+ break;
+
+ case 126:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 537 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 127:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 538 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::alternative((yyvsp[(2) - (2)].item), KDevPG::globalSystem.zero()); ;}
++ { (yyval.item) = KDevPG::alternative((yyvsp[(2) - (2)].item), KDevPG::globalSystem.zero()); }
+ break;
+
+ case 128:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 542 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 129:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 544 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::CloneTree cl;
+ (yyval.item) = KDevPG::cons((yyvsp[(1) - (3)].item), KDevPG::star(KDevPG::cons(cl.clone((yyvsp[(3) - (3)].item)), cl.clone((yyvsp[(1) - (3)].item)))));
+- ;}
++ }
+ break;
+
+ case 130:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 548 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::action((yyvsp[(1) - (2)].item), (yyvsp[(2) - (2)].str)); ;}
++ { (yyval.item) = KDevPG::action((yyvsp[(1) - (2)].item), (yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 131:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 549 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::action(0, (yyvsp[(1) - (1)].str)); ;}
++ { (yyval.item) = KDevPG::action(0, (yyvsp[(1) - (1)].str)); }
+ break;
+
+ case 132:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 553 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 133:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 554 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::cons((yyvsp[(1) - (2)].item), (yyvsp[(2) - (2)].item)); ;}
++ { (yyval.item) = KDevPG::cons((yyvsp[(1) - (2)].item), (yyvsp[(2) - (2)].item)); }
+ break;
+
+ case 134:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 558 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 135:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 559 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::condition((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].item)); ;}
++ { (yyval.item) = KDevPG::condition((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].item)); }
+ break;
+
+ case 136:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 563 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 137:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 564 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::alternative((yyvsp[(1) - (3)].item), (yyvsp[(3) - (3)].item)); ;}
++ { (yyval.item) = KDevPG::alternative((yyvsp[(1) - (3)].item), (yyvsp[(3) - (3)].item)); }
+ break;
+
+ case 138:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 569 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ (yyval.item) = KDevPG::evolve((yyvsp[(1) - (7)].item), KDevPG::globalSystem.pushSymbol((yyvsp[(3) - (7)].str)),
+ (KDevPG::Model::VariableDeclarationItem*) (yyvsp[(6) - (7)].item), (yyvsp[(4) - (7)].str));
+- ;}
++ }
+ break;
+
+ case 139:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 574 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ (yyval.item) = KDevPG::evolve((yyvsp[(1) - (7)].item), KDevPG::globalSystem.pushSymbol((yyvsp[(3) - (7)].str)),
+ (KDevPG::Model::VariableDeclarationItem*) (yyvsp[(5) - (7)].item), (yyvsp[(7) - (7)].str));
+- ;}
++ }
+ break;
+
+ case 140:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 579 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::evolve((yyvsp[(1) - (4)].item), KDevPG::globalSystem.pushSymbol((yyvsp[(3) - (4)].str)), 0, (yyvsp[(4) - (4)].str)); ;}
++ { (yyval.item) = KDevPG::evolve((yyvsp[(1) - (4)].item), KDevPG::globalSystem.pushSymbol((yyvsp[(3) - (4)].str)), 0, (yyvsp[(4) - (4)].str)); }
+ break;
+
+ case 141:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 580 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { if(KDevPG::globalSystem.generateAst == false)
+ {
+@@ -2863,40 +2893,40 @@ yyreduce:
+ exit(-1);
+ }
+ operatorNode = KDevPG::createNode<KDevPG::Model::OperatorItem>();
+- ;}
++ }
+ break;
+
+ case 142:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 586 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { KDevPG::globalSystem.needOperatorStack = true; (yyval.item) = (yyvsp[(2) - (2)].item); ;}
++ { KDevPG::globalSystem.needOperatorStack = true; (yyval.item) = (yyvsp[(2) - (2)].item); }
+ break;
+
+ case 143:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 590 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = const_cast<char*>(""); ;}
++ { (yyval.str) = const_cast<char*>(""); }
+ break;
+
+ case 144:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 591 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
++ { (yyval.str) = (yyvsp[(1) - (1)].str); }
+ break;
+
+ case 146:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 597 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { ; ;}
++ { ; }
+ break;
+
+ case 147:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 602 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ operatorNode->mBase = (KDevPG::Model::NonTerminalItem*)(yyvsp[(2) - (9)].item);
+@@ -2904,12 +2934,12 @@ yyreduce:
+ if(!KDevPG::globalSystem.astBaseClasses.contains(operatorNode->mBase->mSymbol->mName))
+ KDevPG::globalSystem.astBaseClasses[operatorNode->mBase->mSymbol->mName] = KDevPG::capitalized(operatorNode->mName) + "Ast";
+ (yyval.item) = KDevPG::evolve(operatorNode, KDevPG::globalSystem.pushSymbol((yyvsp[(5) - (9)].str)), (KDevPG::Model::VariableDeclarationItem*)(yyvsp[(7) - (9)].item), (yyvsp[(9) - (9)].str));
+- ;}
++ }
+ break;
+
+ case 148:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 610 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ operatorNode->mBase = (KDevPG::Model::NonTerminalItem*)(yyvsp[(2) - (9)].item);
+@@ -2917,12 +2947,12 @@ yyreduce:
+ if(!KDevPG::globalSystem.astBaseClasses.contains(operatorNode->mBase->mSymbol->mName))
+ KDevPG::globalSystem.astBaseClasses[operatorNode->mBase->mSymbol->mName] = KDevPG::capitalized(operatorNode->mName) + "Ast";
+ (yyval.item) = KDevPG::evolve(operatorNode, KDevPG::globalSystem.pushSymbol((yyvsp[(5) - (9)].str)), (KDevPG::Model::VariableDeclarationItem*)(yyvsp[(8) - (9)].item), (yyvsp[(6) - (9)].str));
+- ;}
++ }
+ break;
+
+ case 149:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 618 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ operatorNode->mBase = (KDevPG::Model::NonTerminalItem*)(yyvsp[(2) - (6)].item);
+@@ -2930,89 +2960,89 @@ yyreduce:
+ if(!KDevPG::globalSystem.astBaseClasses.contains(operatorNode->mBase->mSymbol->mName))
+ KDevPG::globalSystem.astBaseClasses[operatorNode->mBase->mSymbol->mName] = KDevPG::capitalized(operatorNode->mName) + "Ast";
+ (yyval.item) = KDevPG::evolve(operatorNode, KDevPG::globalSystem.pushSymbol((yyvsp[(5) - (6)].str)), 0, (yyvsp[(6) - (6)].str));
+- ;}
++ }
+ break;
+
+ case 150:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 628 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushBin(*(yyvsp[(2) - (4)].operatorInformation), (yyvsp[(4) - (4)].str), (yyvsp[(3) - (4)].str)); free((yyvsp[(2) - (4)].operatorInformation)); ;}
++ { operatorNode->pushBin(*(yyvsp[(2) - (4)].operatorInformation), (yyvsp[(4) - (4)].str), (yyvsp[(3) - (4)].str)); free((yyvsp[(2) - (4)].operatorInformation)); }
+ break;
+
+ case 151:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 629 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushTern(*(yyvsp[(2) - (5)].operatorInformation), *(yyvsp[(3) - (5)].operatorInformation), (yyvsp[(5) - (5)].str), (yyvsp[(4) - (5)].str)); free((yyvsp[(2) - (5)].operatorInformation)); free((yyvsp[(3) - (5)].operatorInformation)); ;}
++ { operatorNode->pushTern(*(yyvsp[(2) - (5)].operatorInformation), *(yyvsp[(3) - (5)].operatorInformation), (yyvsp[(5) - (5)].str), (yyvsp[(4) - (5)].str)); free((yyvsp[(2) - (5)].operatorInformation)); free((yyvsp[(3) - (5)].operatorInformation)); }
+ break;
+
+ case 152:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 630 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushPre(*(yyvsp[(2) - (3)].operatorInformation), (yyvsp[(3) - (3)].str)); free((yyvsp[(2) - (3)].operatorInformation)); ;}
++ { operatorNode->pushPre(*(yyvsp[(2) - (3)].operatorInformation), (yyvsp[(3) - (3)].str)); free((yyvsp[(2) - (3)].operatorInformation)); }
+ break;
+
+ case 153:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 631 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushPost(*(yyvsp[(2) - (3)].operatorInformation), "0", (yyvsp[(3) - (3)].str)); free((yyvsp[(2) - (3)].operatorInformation)); free((yyvsp[(3) - (3)].str)); ;}
++ { operatorNode->pushPost(*(yyvsp[(2) - (3)].operatorInformation), "0", (yyvsp[(3) - (3)].str)); free((yyvsp[(2) - (3)].operatorInformation)); free((yyvsp[(3) - (3)].str)); }
+ break;
+
+ case 154:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 632 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushPost(*(yyvsp[(2) - (4)].operatorInformation), (yyvsp[(4) - (4)].str), (yyvsp[(3) - (4)].str)); free((yyvsp[(2) - (4)].operatorInformation)); ;}
++ { operatorNode->pushPost(*(yyvsp[(2) - (4)].operatorInformation), (yyvsp[(4) - (4)].str), (yyvsp[(3) - (4)].str)); free((yyvsp[(2) - (4)].operatorInformation)); }
+ break;
+
+ case 155:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 633 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { operatorNode->pushParen(*(yyvsp[(2) - (3)].operatorInformation), *(yyvsp[(3) - (3)].operatorInformation)); free((yyvsp[(2) - (3)].operatorInformation)); free((yyvsp[(3) - (3)].operatorInformation)); ;}
++ { operatorNode->pushParen(*(yyvsp[(2) - (3)].operatorInformation), *(yyvsp[(3) - (3)].operatorInformation)); free((yyvsp[(2) - (3)].operatorInformation)); free((yyvsp[(3) - (3)].operatorInformation)); }
+ break;
+
+ case 156:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 637 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (char*)"0"; ;}
++ { (yyval.str) = (char*)"0"; }
+ break;
+
+ case 157:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 638 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
++ { (yyval.str) = (yyvsp[(1) - (1)].str); }
+ break;
+
+ case 158:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 639 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
++ { (yyval.str) = (yyvsp[(2) - (2)].str); }
+ break;
+
+ case 159:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 643 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (char*)"1"; ;}
++ { (yyval.str) = (char*)"1"; }
+ break;
+
+ case 160:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 644 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.str) = (char*)"0"; ;}
++ { (yyval.str) = (char*)"0"; }
+ break;
+
+ case 161:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 645 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { uint yyleng = strlen((yyvsp[(2) - (2)].str));
+ char *tmp = (char*)calloc(yyleng+7, sizeof(char));
+@@ -3020,12 +3050,12 @@ yyreduce:
+ strcpy(tmp+1, (yyvsp[(2) - (2)].str));
+ strcpy(tmp+yyleng+6-6+1, "?1:0)");
+ (yyval.str) = tmp;
+- ;}
++ }
+ break;
+
+ case 162:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 652 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ { uint yyleng = strlen((yyvsp[(2) - (2)].str));
+ char *tmp = (char*)calloc(yyleng+7, sizeof(char));
+@@ -3033,47 +3063,47 @@ yyreduce:
+ strcpy(tmp+1, (yyvsp[(2) - (2)].str));
+ strcpy(tmp+yyleng+6-6+1, "?0:1)");
+ (yyval.str) = tmp;
+- ;}
++ }
+ break;
+
+ case 163:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 662 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(3) - (4)].str)), (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].str)); ;}
++ { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(3) - (4)].str)), (yyvsp[(2) - (4)].str), (yyvsp[(4) - (4)].str)); }
+ break;
+
+ case 164:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 663 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(3) - (3)].str)), (yyvsp[(2) - (3)].str), ""); ;}
++ { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(3) - (3)].str)), (yyvsp[(2) - (3)].str), ""); }
+ break;
+
+ case 165:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 664 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(1) - (2)].str)), "", (yyvsp[(2) - (2)].str)); ;}
++ { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(1) - (2)].str)), "", (yyvsp[(2) - (2)].str)); }
+ break;
+
+ case 166:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 665 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(1) - (1)].str)), "", ""); ;}
++ { (yyval.operatorInformation) = KDevPG::makeOperator(KDevPG::globalSystem.terminal((yyvsp[(1) - (1)].str)), "", ""); }
+ break;
+
+ case 167:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 669 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = (yyvsp[(1) - (1)].item); ;}
++ { (yyval.item) = (yyvsp[(1) - (1)].item); }
+ break;
+
+ case 168:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 671 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+ {
+ KDevPG::Model::VariableDeclarationItem *last = (KDevPG::Model::VariableDeclarationItem*) (yyvsp[(1) - (2)].item);
+@@ -3082,85 +3112,96 @@ yyreduce:
+ }
+ last->mNext = (KDevPG::Model::VariableDeclarationItem*) (yyvsp[(2) - (2)].item);
+ (yyval.item) = (yyvsp[(1) - (2)].item);
+- ;}
++ }
+ break;
+
+ case 169:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 683 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (6)].declarationType), (yyvsp[(2) - (6)].storageType), (yyvsp[(3) - (6)].variableType), false, (yyvsp[(4) - (6)].str), (yyvsp[(6) - (6)].str)); ;}
++ { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (6)].declarationType), (yyvsp[(2) - (6)].storageType), (yyvsp[(3) - (6)].variableType), false, (yyvsp[(4) - (6)].str), (yyvsp[(6) - (6)].str)); }
+ break;
+
+ case 170:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 685 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (5)].declarationType), (yyvsp[(2) - (5)].storageType), KDevPG::Model::VariableDeclarationItem::TypeToken, false, (yyvsp[(4) - (5)].str), ""); ;}
++ { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (5)].declarationType), (yyvsp[(2) - (5)].storageType), KDevPG::Model::VariableDeclarationItem::TypeToken, false, (yyvsp[(4) - (5)].str), ""); }
+ break;
+
+ case 171:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 687 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (7)].declarationType), (yyvsp[(2) - (7)].storageType), (yyvsp[(3) - (7)].variableType), true, (yyvsp[(5) - (7)].str), (yyvsp[(7) - (7)].str)); ;}
++ { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (7)].declarationType), (yyvsp[(2) - (7)].storageType), (yyvsp[(3) - (7)].variableType), true, (yyvsp[(5) - (7)].str), (yyvsp[(7) - (7)].str)); }
+ break;
+
+ case 172:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 689 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (6)].declarationType), (yyvsp[(2) - (6)].storageType), KDevPG::Model::VariableDeclarationItem::TypeToken, true, (yyvsp[(5) - (6)].str), ""); ;}
++ { (yyval.item) = KDevPG::variableDeclaration((yyvsp[(1) - (6)].declarationType), (yyvsp[(2) - (6)].storageType), KDevPG::Model::VariableDeclarationItem::TypeToken, true, (yyvsp[(5) - (6)].str), ""); }
+ break;
+
+ case 173:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 693 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.declarationType) = KDevPG::Model::VariableDeclarationItem::DeclarationLocal; ;}
++ { (yyval.declarationType) = KDevPG::Model::VariableDeclarationItem::DeclarationLocal; }
+ break;
+
+ case 174:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 694 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.declarationType) = KDevPG::Model::VariableDeclarationItem::DeclarationArgument; ;}
++ { (yyval.declarationType) = KDevPG::Model::VariableDeclarationItem::DeclarationArgument; }
+ break;
+
+ case 175:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 698 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageAstMember; ;}
++ { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageAstMember; }
+ break;
+
+ case 176:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 699 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageTemporary; ;}
++ { (yyval.storageType) = KDevPG::Model::VariableDeclarationItem::StorageTemporary; }
+ break;
+
+ case 177:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 703 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.variableType) = KDevPG::Model::VariableDeclarationItem::TypeNode; ;}
++ { (yyval.variableType) = KDevPG::Model::VariableDeclarationItem::TypeNode; }
+ break;
+
+ case 178:
+
+-/* Line 1455 of yacc.c */
++/* Line 1806 of yacc.c */
+ #line 704 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { (yyval.variableType) = KDevPG::Model::VariableDeclarationItem::TypeVariable; ;}
++ { (yyval.variableType) = KDevPG::Model::VariableDeclarationItem::TypeVariable; }
+ break;
+
+
+
+-/* Line 1455 of yacc.c */
+-#line 3162 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
++/* Line 1806 of yacc.c */
++#line 3192 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.cc"
+ default: break;
+ }
++ /* User semantic actions sometimes alter yychar, and that requires
++ that yytoken be updated with the new translation. We take the
++ approach of translating immediately before every use of yytoken.
++ One alternative is translating here after every semantic action,
++ but that translation would be missed if the semantic action invokes
++ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
++ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
++ incorrect destructor might then be invoked immediately. In the
++ case of YYERROR or YYBACKUP, subsequent parser actions might lead
++ to an incorrect destructor call or verbose syntax error message
++ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+@@ -3188,6 +3229,10 @@ yyreduce:
+ | yyerrlab -- here on detecting error |
+ `------------------------------------*/
+ yyerrlab:
++ /* Make sure we have latest lookahead translation. See comments at
++ user semantic actions for why this is necessary. */
++ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
++
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+@@ -3195,37 +3240,36 @@ yyerrlab:
+ #if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+ #else
++# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
++ yyssp, yytoken)
+ {
+- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+- {
+- YYSIZE_T yyalloc = 2 * yysize;
+- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+- yyalloc = YYSTACK_ALLOC_MAXIMUM;
+- if (yymsg != yymsgbuf)
+- YYSTACK_FREE (yymsg);
+- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+- if (yymsg)
+- yymsg_alloc = yyalloc;
+- else
+- {
+- yymsg = yymsgbuf;
+- yymsg_alloc = sizeof yymsgbuf;
+- }
+- }
+-
+- if (0 < yysize && yysize <= yymsg_alloc)
+- {
+- (void) yysyntax_error (yymsg, yystate, yychar);
+- yyerror (yymsg);
+- }
+- else
+- {
+- yyerror (YY_("syntax error"));
+- if (yysize != 0)
+- goto yyexhaustedlab;
+- }
++ char const *yymsgp = YY_("syntax error");
++ int yysyntax_error_status;
++ yysyntax_error_status = YYSYNTAX_ERROR;
++ if (yysyntax_error_status == 0)
++ yymsgp = yymsg;
++ else if (yysyntax_error_status == 1)
++ {
++ if (yymsg != yymsgbuf)
++ YYSTACK_FREE (yymsg);
++ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
++ if (!yymsg)
++ {
++ yymsg = yymsgbuf;
++ yymsg_alloc = sizeof yymsgbuf;
++ yysyntax_error_status = 2;
++ }
++ else
++ {
++ yysyntax_error_status = YYSYNTAX_ERROR;
++ yymsgp = yymsg;
++ }
++ }
++ yyerror (yymsgp);
++ if (yysyntax_error_status == 2)
++ goto yyexhaustedlab;
+ }
++# undef YYSYNTAX_ERROR
+ #endif
+ }
+
+@@ -3284,7 +3328,7 @@ yyerrlab1:
+ for (;;)
+ {
+ yyn = yypact[yystate];
+- if (yyn != YYPACT_NINF)
++ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+@@ -3343,8 +3387,13 @@ yyexhaustedlab:
+
+ yyreturn:
+ if (yychar != YYEMPTY)
+- yydestruct ("Cleanup: discarding lookahead",
+- yytoken, &yylval);
++ {
++ /* Make sure we have latest lookahead translation. See comments at
++ user semantic actions for why this is necessary. */
++ yytoken = YYTRANSLATE (yychar);
++ yydestruct ("Cleanup: discarding lookahead",
++ yytoken, &yylval);
++ }
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+@@ -3369,7 +3418,7 @@ yyreturn:
+
+
+
+-/* Line 1675 of yacc.c */
++/* Line 2067 of yacc.c */
+ #line 707 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+
+
+diff --git a/kdev-pg/kdev-pg-parser.hh b/kdev-pg/kdev-pg-parser.hh
+index 3b909d8..a81e4e3 100644
+--- a/kdev-pg/kdev-pg-parser.hh
++++ b/kdev-pg/kdev-pg-parser.hh
+@@ -1,10 +1,8 @@
++/* A Bison parser, made by GNU Bison 2.5. */
+
+-/* A Bison parser, made by GNU Bison 2.4.1. */
+-
+-/* Skeleton interface for Bison's Yacc-like parsers in C
++/* Bison interface for Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+- Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -115,7 +113,7 @@
+ typedef union YYSTYPE
+ {
+
+-/* Line 1676 of yacc.c */
++/* Line 2068 of yacc.c */
+ #line 49 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+
+ KDevPG::Model::Node *item;
+@@ -128,8 +126,8 @@ typedef union YYSTYPE
+
+
+
+-/* Line 1676 of yacc.c */
+-#line 133 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.hh"
++/* Line 2068 of yacc.c */
++#line 131 "/home/jonathan/gitKDE/kdevelop-pg-qt/build/kdev-pg/kdev-pg-parser.hh"
+ } YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+--
+1.9.3
+
diff --git a/0010-version-strings.patch b/0010-version-strings.patch
new file mode 100644
index 0000000..63f8cb3
--- /dev/null
+++ b/0010-version-strings.patch
@@ -0,0 +1,50 @@
+From 90d20fbd15bba91c5a21f08e5332f763da5569e8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Wed, 31 Oct 2012 17:00:22 +0100
+Subject: [PATCH 10/17] version strings
+
+---
+ cmake/modules/KDevelop-PG-QtConfig.cmake | 4 ++--
+ cmake/modules/KDevelop-PG-QtConfigVersion.cmake | 10 +++++-----
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/cmake/modules/KDevelop-PG-QtConfig.cmake b/cmake/modules/KDevelop-PG-QtConfig.cmake
+index 72f41ae..604009d 100644
+--- a/cmake/modules/KDevelop-PG-QtConfig.cmake
++++ b/cmake/modules/KDevelop-PG-QtConfig.cmake
+@@ -195,8 +195,8 @@ message(STATUS "Using kdevelop-pg-qt executable: ${KDEVPGQT_EXECUTABLE}")
+ endif(KDEVPGQT_FOUND)
+ message(STATUS ${PACKAGE_FIND_NAME})
+ message(STATUS ${PACKAGE_FIND_VERSION})
+-set(KDevelop-PG-Qt_VERSION 1.0.0)
++set(KDevelop-PG-Qt_VERSION 1.0.1)
+ set(KDevelop-PG-Qt_VERSION_COUNT 3)
+ set(KDevelop-PG-Qt_VERSION_MAJOR 1)
+ set(KDevelop-PG-Qt_VERSION_MINOR 0)
+-set(KDevelop-PG-Qt_VERSION_PATCH true)
+\ No newline at end of file
++set(KDevelop-PG-Qt_VERSION_PATCH 1)
+\ No newline at end of file
+diff --git a/cmake/modules/KDevelop-PG-QtConfigVersion.cmake b/cmake/modules/KDevelop-PG-QtConfigVersion.cmake
+index cf4fa18..331c519 100644
+--- a/cmake/modules/KDevelop-PG-QtConfigVersion.cmake
++++ b/cmake/modules/KDevelop-PG-QtConfigVersion.cmake
+@@ -1,9 +1,9 @@
+-set(PACKAGE_VERSION 1.0.0)
++set(PACKAGE_VERSION 1.0.1)
+ if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 1)
+- if("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 0)
+- if("${PACKAGE_FIND_VERSION_PATCH}" EQUAL 0)
+- set(PACKAGE_VERSION_COMPATIBLE 1)
++ if("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 0)
++ set(PACKAGE_VERSION_COMPATIBLE 1)
++ if("${PACKAGE_FIND_VERSION_PATCH}" EQUAL 1)
+ set(PACKAGE_VERSION_EXACT 1)
+- endif("${PACKAGE_FIND_VERSION_PATCH}" EQUAL 0)
++ endif("${PACKAGE_FIND_VERSION_PATCH}" EQUAL 1)
+ endif("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 0)
+ endif("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 1)
+\ No newline at end of file
+--
+1.9.3
+
diff --git a/0011-fix-some-warnings.patch b/0011-fix-some-warnings.patch
new file mode 100644
index 0000000..7392fbf
--- /dev/null
+++ b/0011-fix-some-warnings.patch
@@ -0,0 +1,53 @@
+From ac587957cd0cabbc668604507e2cfebb6810ed09 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <mail at milianw.de>
+Date: Thu, 29 Nov 2012 15:56:40 +0100
+Subject: [PATCH 11/17] fix some warnings
+
+---
+ kdev-pg/kdev-pg-code-gen.cpp | 2 +-
+ kdev-pg/kdev-pg-lexer.ll | 2 +-
+ kdev-pg/kdev-pg-parser.yy | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kdev-pg/kdev-pg-code-gen.cpp b/kdev-pg/kdev-pg-code-gen.cpp
+index e06c6be..badb461 100644
+--- a/kdev-pg/kdev-pg-code-gen.cpp
++++ b/kdev-pg/kdev-pg-code-gen.cpp
+@@ -51,7 +51,7 @@ namespace KDevPG
+
+ void generateCondition(const World::NodeSet& s, QTextStream& out)
+ {
+- if(s.size() == 0 || s.size() == 1 && nodeCast<Model::ZeroItem*>(*s.begin()) != 0)
++ if(s.size() == 0 || (s.size() == 1 && nodeCast<Model::ZeroItem*>(*s.begin()) != 0))
+ {
+ out << "true /*epsilon*/";
+ return;
+diff --git a/kdev-pg/kdev-pg-lexer.ll b/kdev-pg/kdev-pg-lexer.ll
+index a0864af..9261d71 100644
+--- a/kdev-pg/kdev-pg-lexer.ll
++++ b/kdev-pg/kdev-pg-lexer.ll
+@@ -425,7 +425,7 @@ void appendLineBuffer()
+ strcpy(yyTextLine+currentOffset, yytext + (yymoreFlag ? lastTextLeng : 0)); /* append current */
+ /* strcpy is faster than strcat */
+
+- Q_ASSERT(strlen(yyTextLine) < yyTextLineLeng);
++ Q_ASSERT(strlen(yyTextLine) < size_t(yyTextLineLeng));
+
+ lastTextLeng = strlen(yytext);
+ yymoreFlag = false;
+diff --git a/kdev-pg/kdev-pg-parser.yy b/kdev-pg/kdev-pg-parser.yy
+index d5a25f5..8f8d604 100644
+--- a/kdev-pg/kdev-pg-parser.yy
++++ b/kdev-pg/kdev-pg-parser.yy
+@@ -309,7 +309,7 @@ opt_lexer_action
+ | T_CONTINUE {
+ r = "\nlxCONTINUE;\n";
+ }
+- | /* empty */ { r = "\nlxSKIP\n" }
++ | /* empty */ { r = "\nlxSKIP\n"; }
+ ;
+
+ regexp
+--
+1.9.3
+
diff --git a/0012-updated-generated-files.patch b/0012-updated-generated-files.patch
new file mode 100644
index 0000000..777309c
--- /dev/null
+++ b/0012-updated-generated-files.patch
@@ -0,0 +1,39 @@
+From 97e140477e7247ec8c823cdc54500b5691d9a896 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonathan=20Schmidt-Domin=C3=A9?= <git at the-user.org>
+Date: Thu, 29 Nov 2012 16:02:28 +0100
+Subject: [PATCH 12/17] updated generated files
+
+---
+ kdev-pg/kdev-pg-lexer.cc | 2 +-
+ kdev-pg/kdev-pg-parser.cc | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kdev-pg/kdev-pg-lexer.cc b/kdev-pg/kdev-pg-lexer.cc
+index 0009ccb..b874f85 100644
+--- a/kdev-pg/kdev-pg-lexer.cc
++++ b/kdev-pg/kdev-pg-lexer.cc
+@@ -3423,7 +3423,7 @@ void appendLineBuffer()
+ strcpy(yyTextLine+currentOffset, yytext + (yymoreFlag ? lastTextLeng : 0)); /* append current */
+ /* strcpy is faster than strcat */
+
+- Q_ASSERT(strlen(yyTextLine) < yyTextLineLeng);
++ Q_ASSERT(strlen(yyTextLine) < size_t(yyTextLineLeng));
+
+ lastTextLeng = strlen(yytext);
+ yymoreFlag = false;
+diff --git a/kdev-pg/kdev-pg-parser.cc b/kdev-pg/kdev-pg-parser.cc
+index 4636927..2cfbc87 100644
+--- a/kdev-pg/kdev-pg-parser.cc
++++ b/kdev-pg/kdev-pg-parser.cc
+@@ -2192,7 +2192,7 @@ yyreduce:
+
+ /* Line 1806 of yacc.c */
+ #line 312 "/home/jonathan/gitKDE/kdevelop-pg-qt/kdev-pg/kdev-pg-parser.yy"
+- { r = "\nlxSKIP\n" ;}
++ { r = "\nlxSKIP\n"; }
+ break;
+
+ case 50:
+--
+1.9.3
+
diff --git a/0013-Fix-some-clang-compiler-warnings.patch b/0013-Fix-some-clang-compiler-warnings.patch
new file mode 100644
index 0000000..698a9e5
--- /dev/null
+++ b/0013-Fix-some-clang-compiler-warnings.patch
@@ -0,0 +1,48 @@
+From c265a5cdfc0618ec18d4dbbcf27cdfbe0fb932c8 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <mail at milianw.de>
+Date: Sun, 4 Aug 2013 21:36:49 +0200
+Subject: [PATCH 13/17] Fix some clang compiler warnings
+
+---
+ include/kdev-pg-allocator.h | 4 ++--
+ include/kdev-pg-char-sets.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/include/kdev-pg-allocator.h b/include/kdev-pg-allocator.h
+index 6ba306b..fe860de 100644
+--- a/include/kdev-pg-allocator.h
++++ b/include/kdev-pg-allocator.h
+@@ -107,7 +107,7 @@ public:
+ return p;
+ }
+
+- void deallocate(pointer __p, sizeType __n)
++ void deallocate(pointer /*__p*/, sizeType /*__n*/)
+ {}
+
+ sizeType maxSize() const
+@@ -132,7 +132,7 @@ private:
+ };
+
+ template <class _Tp1>
+- Allocator(const Allocator<_Tp1> &__o)
++ Allocator(const Allocator<_Tp1> &/*__o*/)
+ {}
+
+ private:
+diff --git a/include/kdev-pg-char-sets.h b/include/kdev-pg-char-sets.h
+index 5b2b428..1ac38d4 100644
+--- a/include/kdev-pg-char-sets.h
++++ b/include/kdev-pg-char-sets.h
+@@ -164,7 +164,7 @@ struct Codec2Size<Ucs4>
+ };
+
+ template<CharEncoding codec>
+-inline typename Codec2Container<codec>::Result qString2Codec(const QString& str)
++inline typename Codec2Container<codec>::Result qString2Codec(const QString& /*str*/)
+ {
+ static_assert(Codec2False<codec>::value, "Unknown codec");
+ }
+--
+1.9.3
+
diff --git a/0014-Fix-compile-with-clang-also-enable-exceptions-there.patch b/0014-Fix-compile-with-clang-also-enable-exceptions-there.patch
new file mode 100644
index 0000000..cd8d82f
--- /dev/null
+++ b/0014-Fix-compile-with-clang-also-enable-exceptions-there.patch
@@ -0,0 +1,29 @@
+From f32988dbaefcad34ab7966676058629e73c438fd Mon Sep 17 00:00:00 2001
+From: Milian Wolff <mail at milianw.de>
+Date: Sun, 4 Aug 2013 21:37:01 +0200
+Subject: [PATCH 14/17] Fix compile with clang, also enable exceptions there.
+
+---
+ kdev-pg/CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kdev-pg/CMakeLists.txt b/kdev-pg/CMakeLists.txt
+index 7022121..516f5b3 100644
+--- a/kdev-pg/CMakeLists.txt
++++ b/kdev-pg/CMakeLists.txt
+@@ -4,9 +4,9 @@ PROJECT(kdevpg)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+ REMOVE_DEFINITIONS(-DQT_NO_STL)
+ ADD_DEFINITIONS(-DQT_STL)
+-if(CMAKE_COMPILER_IS_GNUCC)
+- add_definitions(-fexceptions)
+-endif(CMAKE_COMPILER_IS_GNUCC)
++if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
++ add_definitions(-fexceptions -std=c++11)
++endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
+
+ QT4_ADD_RESOURCES(kdevpg_rcc_srcs ../unidata.qrc)
+
+--
+1.9.3
+
diff --git a/0015-std-c-11-std-c-0x-to-fix-build-on-build.kde.org.patch b/0015-std-c-11-std-c-0x-to-fix-build-on-build.kde.org.patch
new file mode 100644
index 0000000..d91bb8f
--- /dev/null
+++ b/0015-std-c-11-std-c-0x-to-fix-build-on-build.kde.org.patch
@@ -0,0 +1,26 @@
+From 5209a0439006c1ceac6e25fe583a8f1e068af0b8 Mon Sep 17 00:00:00 2001
+From: Sven Brauch <svenbrauch at googlemail.com>
+Date: Sun, 8 Sep 2013 01:24:00 +0200
+Subject: [PATCH 15/17] -std=c++11 -> -std=c++0x to fix build on build.kde.org
+
+still builds with gcc 4.8
+---
+ kdev-pg/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kdev-pg/CMakeLists.txt b/kdev-pg/CMakeLists.txt
+index 516f5b3..57eb03b 100644
+--- a/kdev-pg/CMakeLists.txt
++++ b/kdev-pg/CMakeLists.txt
+@@ -5,7 +5,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+ REMOVE_DEFINITIONS(-DQT_NO_STL)
+ ADD_DEFINITIONS(-DQT_STL)
+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
+- add_definitions(-fexceptions -std=c++11)
++ add_definitions(-fexceptions -std=c++0x)
+ endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES Clang)
+
+ QT4_ADD_RESOURCES(kdevpg_rcc_srcs ../unidata.qrc)
+--
+1.9.3
+
diff --git a/0016-Make-it-possible-to-build-without-tests.patch b/0016-Make-it-possible-to-build-without-tests.patch
new file mode 100644
index 0000000..a598d89
--- /dev/null
+++ b/0016-Make-it-possible-to-build-without-tests.patch
@@ -0,0 +1,26 @@
+From 40a5142bff0b870b6b389fdb92e78431afeabe79 Mon Sep 17 00:00:00 2001
+From: Kevin Funk <kevin at kfunk.org>
+Date: Fri, 24 Jan 2014 16:11:17 +0100
+Subject: [PATCH 16/17] Make it possible to build without tests
+
+This is still ON by default, though. See
+http://marc.info/?l=kde-commits&m=134980086725078
+---
+ CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0ed26eb..121ad3d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -47,7 +47,6 @@ add_subdirectory(examples EXCLUDE_FROM_ALL)
+
+ if(KDE4_FOUND)
+ enable_testing()
+- set(KDE4_BUILD_TESTS "ON" CACHE "BOOL" "Enable building of tests" FORCE )
+ add_subdirectory(tests)
+ endif(KDE4_FOUND)
+
+--
+1.9.3
+
diff --git a/0017-CMake-Fix-printing-of-empty-lines.patch b/0017-CMake-Fix-printing-of-empty-lines.patch
new file mode 100644
index 0000000..7363b74
--- /dev/null
+++ b/0017-CMake-Fix-printing-of-empty-lines.patch
@@ -0,0 +1,29 @@
+From e7f6e60c6a138fd891556c630f6783259b489e1e Mon Sep 17 00:00:00 2001
+From: Kevin Funk <kfunk at kde.org>
+Date: Sat, 7 Jun 2014 11:04:25 +0200
+Subject: [PATCH 17/17] CMake: Fix printing of empty lines
+
+---
+ cmake/modules/KDevelop-PG-QtConfig.cmake | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/cmake/modules/KDevelop-PG-QtConfig.cmake b/cmake/modules/KDevelop-PG-QtConfig.cmake
+index 604009d..601e23d 100644
+--- a/cmake/modules/KDevelop-PG-QtConfig.cmake
++++ b/cmake/modules/KDevelop-PG-QtConfig.cmake
+@@ -193,10 +193,8 @@ if(KDEVPGQT_FOUND)
+ message(STATUS "Using kdevelop-pg-qt include dir: ${KDEVPGQT_INCLUDE_DIR}")
+ message(STATUS "Using kdevelop-pg-qt executable: ${KDEVPGQT_EXECUTABLE}")
+ endif(KDEVPGQT_FOUND)
+-message(STATUS ${PACKAGE_FIND_NAME})
+-message(STATUS ${PACKAGE_FIND_VERSION})
+ set(KDevelop-PG-Qt_VERSION 1.0.1)
+ set(KDevelop-PG-Qt_VERSION_COUNT 3)
+ set(KDevelop-PG-Qt_VERSION_MAJOR 1)
+ set(KDevelop-PG-Qt_VERSION_MINOR 0)
+-set(KDevelop-PG-Qt_VERSION_PATCH 1)
+\ No newline at end of file
++set(KDevelop-PG-Qt_VERSION_PATCH 1)
+--
+1.9.3
+
diff --git a/kdevelop-pg-qt.spec b/kdevelop-pg-qt.spec
index c3d487e..ff19684 100644
--- a/kdevelop-pg-qt.spec
+++ b/kdevelop-pg-qt.spec
@@ -2,14 +2,29 @@
Name: kdevelop-pg-qt
Summary: A parser generator
Version: 1.0.0
-Release: 5%{?dist}
+Release: 6%{?dist}
# All LGPLv2+, except for bison-generated kdev-pg-parser.{cc.h} which are GPLv2+
License: LGPLv2+ and GPLv2+ with exception
-Group: Development/Tools
URL: http://techbase.kde.org/Development/KDevelop-PG-Qt_Introduction
-Source0: ftp://ftp.kde.org/pub/kde/stable/kdevelop-pg-qt/%{version}/src/kdevelop-pg-qt-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Source0: http://download.kde.org/stable/kdevelop-pg-qt/%{version}/src/kdevelop-pg-qt-%{version}.tar.bz2
+
+Patch1: 0001-set-LIB_INSTALL_DIR-even-with-no-KDE4-stuff.patch
+Patch2: 0002-Some-std-string-support-in-iterators.patch
+Patch3: 0003-bugfix-inserting-user-generated-code.patch
+Patch4: 0004-add-CTest-CDash-config-for-KDevelop-PG-Qt.patch
+Patch5: 0005-force-building-of-unit-tests.patch
+Patch7: 0007-Fixed-the-bit-array-implementation-and-replaced-vect.patch
+Patch8: 0008-Fixed-handling-of-overflows-in-TokenStream-read.patch
+Patch9: 0009-Updated-generated-files.patch
+Patch10:0010-version-strings.patch
+Patch11:0011-fix-some-warnings.patch
+Patch12:0012-updated-generated-files.patch
+Patch13:0013-Fix-some-clang-compiler-warnings.patch
+Patch14:0014-Fix-compile-with-clang-also-enable-exceptions-there.patch
+Patch15:0015-std-c-11-std-c-0x-to-fix-build-on-build.kde.org.patch
+Patch16:0016-Make-it-possible-to-build-without-tests.patch
+Patch17:0017-CMake-Fix-printing-of-empty-lines.patch
BuildRequires: bison
BuildRequires: flex
@@ -23,7 +38,6 @@ implements the visitor-pattern and uses the Qt library. That is why it
is ideal to be used in Qt-/KDE-based applications like KDevelop.
%package devel
-Group: Development/Libraries
Summary: Developer files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: kdelibs4-devel
@@ -34,7 +48,7 @@ Obsoletes: kdevelop-pg-qt-devel < 1.0.0-1
%prep
-%setup -q -n kdevelop-pg-qt-%{version}
+%autosetup -p1
%build
@@ -47,28 +61,23 @@ make %{?_smp_mflags} -C %{_target_platform}
%install
-rm -rf %{buildroot}
-
make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
-%clean
-rm -rf %{buildroot}
-
-
%files
-%defattr(-,root,root,-)
%doc AUTHORS COPYING.LIB README
%{_bindir}/kdev-pg-qt
%files devel
-%defattr(-,root,root,-)
%{_includedir}/kdevelop-pg-qt/
%dir %{_libdir}/cmake
%{_libdir}/cmake/KDevelop-PG-Qt/
%changelog
+* Tue Jun 10 2014 Rex Dieter <rdieter at fedoraproject.org> 1.0.0-6
+- pull in upstream commits, .spec cleanup
+
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.0.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
More information about the scm-commits
mailing list