diff --git a/alib2data/src/alphabet/BarSymbol.cpp b/alib2data/src/alphabet/BarSymbol.cpp
index 1b555791f72d6b46adbd09e3481dcc52ad40dfb2..7eb612a33203910da3e3549b2da0ed03b1653901 100644
--- a/alib2data/src/alphabet/BarSymbol.cpp
+++ b/alib2data/src/alphabet/BarSymbol.cpp
@@ -38,7 +38,8 @@ BarSymbol::operator std::string () const {
 	return "|";
 }
 
-BarSymbol BarSymbol::BAR = BarSymbol();
+BarSymbol BarSymbol::BAR = BarSymbol ( );
+Symbol BarSymbol::BAR_SYMBOL = Symbol ( BarSymbol ( ) );
 
 const std::string BarSymbol::XML_TAG_NAME = "BarSymbol";
 
diff --git a/alib2data/src/alphabet/BarSymbol.h b/alib2data/src/alphabet/BarSymbol.h
index 9977ca8bc0c55ac70365d92a33330de5e1ca8ffb..350ad3a8b998018ebd5d2342b1e92651ec7b80e6 100644
--- a/alib2data/src/alphabet/BarSymbol.h
+++ b/alib2data/src/alphabet/BarSymbol.h
@@ -9,6 +9,7 @@
 #define BAR_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
 
 namespace alphabet {
 
@@ -39,6 +40,7 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static BarSymbol BAR;
+	static Symbol BAR_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/BlankSymbol.cpp b/alib2data/src/alphabet/BlankSymbol.cpp
index 1aa35ba7ab47e79a901aac60bc81c594a51aa636..8383d3813812b3aacfd8ea1935433295e25ca89c 100644
--- a/alib2data/src/alphabet/BlankSymbol.cpp
+++ b/alib2data/src/alphabet/BlankSymbol.cpp
@@ -38,7 +38,8 @@ BlankSymbol::operator std::string () const {
 	return "B";
 }
 
-BlankSymbol BlankSymbol::BLANK = BlankSymbol();
+BlankSymbol BlankSymbol::BLANK = BlankSymbol ( );
+Symbol BlankSymbol::BLANK_SYMBOL = Symbol ( BlankSymbol ( ) );
 
 const std::string BlankSymbol::XML_TAG_NAME = "BlankSymbol";
 
diff --git a/alib2data/src/alphabet/BlankSymbol.h b/alib2data/src/alphabet/BlankSymbol.h
index 62efda43f1b047a4958c4543c92b98d8a2bb87a3..45eb16caae2061d8ac755025329c985be17ab652 100644
--- a/alib2data/src/alphabet/BlankSymbol.h
+++ b/alib2data/src/alphabet/BlankSymbol.h
@@ -9,6 +9,7 @@
 #define BLANK_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
 
 namespace alphabet {
 
@@ -39,6 +40,7 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static BlankSymbol BLANK;
+	static Symbol BLANK_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
index e0f3377599484d052e72be74369f34b9967bb9b9..a1545fd1ae869b9de64e0a759296f8e4180576dc 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
@@ -38,7 +38,8 @@ BottomOfTheStackSymbol::operator std::string () const {
 	return "T";
 }
 
-BottomOfTheStackSymbol BottomOfTheStackSymbol::BOTTOM_OF_THE_STACK = BottomOfTheStackSymbol();
+BottomOfTheStackSymbol BottomOfTheStackSymbol::BOTTOM_OF_THE_STACK = BottomOfTheStackSymbol ( );
+Symbol BottomOfTheStackSymbol::BOTTOM_OF_THE_STACK_SYMBOL = Symbol ( BottomOfTheStackSymbol ( ) );
 
 const std::string BottomOfTheStackSymbol::XML_TAG_NAME = "BottomOfTheStackSymbol";
 
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.h b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
index 05d81fcddb73fcec8ad68faa0a79b2177fe25275..ecf06365474a07db3d2331de2429157971718c3b 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.h
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
@@ -9,6 +9,7 @@
 #define BOTTOM_OF_THE_STACK_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
 
 namespace alphabet {
 
@@ -39,6 +40,7 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static BottomOfTheStackSymbol BOTTOM_OF_THE_STACK;
+	static Symbol BOTTOM_OF_THE_STACK_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/EndSymbol.cpp b/alib2data/src/alphabet/EndSymbol.cpp
index 8448b8c73b3cabf4d7219da0c01cae3da1e00b03..792c80185ae0c0b59926fe86f1eacc38f26ff555 100644
--- a/alib2data/src/alphabet/EndSymbol.cpp
+++ b/alib2data/src/alphabet/EndSymbol.cpp
@@ -38,7 +38,8 @@ EndSymbol::operator std::string () const {
 	return "$";
 }
 
-EndSymbol EndSymbol::END = EndSymbol();
+EndSymbol EndSymbol::END = EndSymbol ( );
+Symbol EndSymbol::END_SYMBOL = Symbol ( EndSymbol ( ) );
 
 const std::string EndSymbol::XML_TAG_NAME = "EndSymbol";
 
diff --git a/alib2data/src/alphabet/EndSymbol.h b/alib2data/src/alphabet/EndSymbol.h
index a0b454b75d3a3db30cb4d7bac4211b1fb748d016..377eb2d36e3de85f46b89f08a04c9d254d1f12cc 100644
--- a/alib2data/src/alphabet/EndSymbol.h
+++ b/alib2data/src/alphabet/EndSymbol.h
@@ -9,6 +9,7 @@
 #define END_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
 
 namespace alphabet {
 
@@ -39,6 +40,7 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static EndSymbol END;
+	static Symbol END_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/StartSymbol.cpp b/alib2data/src/alphabet/StartSymbol.cpp
index d6ece369302cd7ee1ed1aa699bba89e899f49215..6a627cf28af926f995c34c0f30a69d061f42e7a4 100644
--- a/alib2data/src/alphabet/StartSymbol.cpp
+++ b/alib2data/src/alphabet/StartSymbol.cpp
@@ -38,7 +38,8 @@ StartSymbol::operator std::string () const {
 	return "$";
 }
 
-StartSymbol StartSymbol::START = StartSymbol();
+StartSymbol StartSymbol::START = StartSymbol ( );
+Symbol StartSymbol::START_SYMBOL = Symbol ( StartSymbol ( ) );
 
 const std::string StartSymbol::XML_TAG_NAME = "StartSymbol";
 
diff --git a/alib2data/src/alphabet/StartSymbol.h b/alib2data/src/alphabet/StartSymbol.h
index e05c89f972323f882956c6f41a48e3f0d1e6443e..db050efbcf04f3468f57e38e51f79636b87f069a 100644
--- a/alib2data/src/alphabet/StartSymbol.h
+++ b/alib2data/src/alphabet/StartSymbol.h
@@ -9,6 +9,7 @@
 #define START_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
 
 namespace alphabet {
 
@@ -39,6 +40,7 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static StartSymbol START;
+	static Symbol START_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
index b4c614c1a9bf619a5b50c74397f7aa4f7923d99c..77ce1b695e9bbb6d578e5635a328f9acd9c3ad8b 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
@@ -38,7 +38,9 @@ SubtreeWildcardSymbol::operator std::string () const {
 	return "#S";
 }
 
-SubtreeWildcardSymbol SubtreeWildcardSymbol::SUBTREE_WILDCARD = SubtreeWildcardSymbol();
+SubtreeWildcardSymbol SubtreeWildcardSymbol::SUBTREE_WILDCARD = SubtreeWildcardSymbol ( );
+Symbol SubtreeWildcardSymbol::SUBTREE_WILDCARD_SYMBOL = Symbol ( SubtreeWildcardSymbol ( ) );
+RankedSymbol SubtreeWildcardSymbol::RANKED_SUBTREE_WILDCARD_SYMBOL = RankedSymbol ( Symbol ( SubtreeWildcardSymbol ( ) ), 0);
 
 const std::string SubtreeWildcardSymbol::XML_TAG_NAME = "SubtreeWildcardSymbol";
 
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
index ec4dc443d61677349414341e4a28138853213189..946a6d2c20e7dfb035ba0b2dedb81879fc027ee9 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
@@ -9,6 +9,8 @@
 #define SUBTREE_WILDCARD_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
+#include "RankedSymbol.h"
 
 namespace alphabet {
 
@@ -39,6 +41,8 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static SubtreeWildcardSymbol SUBTREE_WILDCARD;
+	static Symbol SUBTREE_WILDCARD_SYMBOL;
+	static RankedSymbol RANKED_SUBTREE_WILDCARD_SYMBOL;
 
 	const static std::string XML_TAG_NAME;
 
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.cpp b/alib2data/src/alphabet/VariablesBarSymbol.cpp
index a0660e9e2b2d1cdae47de43458f9b781d1678417..22fd597449219faeca66dd0ead7ad5ea2a189da0 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.cpp
+++ b/alib2data/src/alphabet/VariablesBarSymbol.cpp
@@ -38,6 +38,8 @@ VariablesBarSymbol::operator std::string ( ) const {
 }
 
 VariablesBarSymbol VariablesBarSymbol::BAR = VariablesBarSymbol ( );
+Symbol VariablesBarSymbol::BAR_SYMBOL = Symbol ( VariablesBarSymbol ( ) );
+RankedSymbol VariablesBarSymbol::RANKED_BAR_SYMBOL = RankedSymbol ( Symbol ( VariablesBarSymbol ( ) ), 0);
 
 const std::string VariablesBarSymbol::XML_TAG_NAME = "VariablesBarSymbol";
 
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h
index 50c053fcadfd645e2ef4683d17dc3753749a237c..e24f4f8306d370ae2d5dab9925e8b83fe47690f6 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.h
+++ b/alib2data/src/alphabet/VariablesBarSymbol.h
@@ -9,6 +9,8 @@
 #define VARIABLES_BAR_SYMBOL_H_
 
 #include "SymbolBase.h"
+#include "Symbol.h"
+#include "RankedSymbol.h"
 
 namespace alphabet {
 
@@ -39,6 +41,8 @@ public:
 	virtual explicit operator std::string ( ) const;
 
 	static VariablesBarSymbol BAR;
+	static Symbol BAR_SYMBOL;
+	static RankedSymbol RANKED_BAR_SYMBOL;
 
 	const static std::string XML_TAG_NAME;