diff --git a/.gitmodules b/.gitmodules
index 112a0edd3e7..9828eb980ba 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
[submodule "libs/h5xx"]
path = libs/h5xx
url = https://github.com/h5md/h5xx.git
+[submodule "libs/boost_matheval"]
+ path = libs/boost_matheval
+ url = https://github.com/hmenke/boost_matheval.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3fe4873011b..e887229c0bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -248,6 +248,19 @@ if(WITH_VALGRIND_INSTRUMENTATION)
endif(VALGRIND_FOUND)
endif(WITH_VALGRIND_INSTRUMENTATION)
+# Check out the Boost Matheval submodule
+if(NOT EXISTS "${CMAKE_SOURCE_DIR}/libs/boost_matheval/.git")
+ # Try to find git
+ find_package(Git)
+ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
+ message(STATUS "Initializing/updating Boost Matheval")
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} submodule update --init -- libs/boost_matheval
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+ endif()
+endif()
+include_directories(${CMAKE_SOURCE_DIR}/libs/boost_matheval/include)
+
include(RequireCXX11)
#######################################################################
diff --git a/doc/doxygen/main.dox b/doc/doxygen/main.dox
index 849aff5aba4..66b6b312494 100755
--- a/doc/doxygen/main.dox
+++ b/doc/doxygen/main.dox
@@ -50,7 +50,7 @@ i. e. a client-server model is utilized. More details can be found in
however, the communication is done synchronously. For more details
see \ref integrate.cpp "integrate.cpp".
-\section Copyright and License of the Code Documentation
+\section copyright Copyright and License of the Code Documentation
Copyright (C) 2010,2011,2012 The ESPResSo project
Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010
Max-Planck-Institute for Polymer Research, Theory Group
diff --git a/libs/boost_matheval b/libs/boost_matheval
new file mode 160000
index 00000000000..72edf4cf45a
--- /dev/null
+++ b/libs/boost_matheval
@@ -0,0 +1 @@
+Subproject commit 72edf4cf45ac8c71511c0fea97878906f473b7aa
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index b3ae97452f9..afe9a80ca29 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1,6 +1,4 @@
-file(GLOB EspressoCore_SRC
- "*.cpp"
- )
+file(GLOB EspressoCore_SRC "*.cpp" "utils/*.cpp")
if( WITH_COVERAGE )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Og --coverage -fprofile-arcs -ftest-coverage")
diff --git a/src/core/unit_tests/CMakeLists.txt b/src/core/unit_tests/CMakeLists.txt
index 65c5bf6b877..bc8951e0f54 100644
--- a/src/core/unit_tests/CMakeLists.txt
+++ b/src/core/unit_tests/CMakeLists.txt
@@ -85,3 +85,4 @@ unit_test(NAME for_each_pair_test SRC for_each_pair_test.cpp)
unit_test(NAME all_compare_test SRC all_compare_test.cpp NUM_PROC 3)
unit_test(NAME None_test SRC None_test.cpp)
unit_test(NAME keys_test SRC keys_test.cpp)
+unit_test(NAME ExpressionParser_test SRC ExpressionParser_test.cpp ../utils/ExpressionParser.cpp)
diff --git a/src/core/unit_tests/ExpressionParser_test.cpp b/src/core/unit_tests/ExpressionParser_test.cpp
new file mode 100644
index 00000000000..183449ef43a
--- /dev/null
+++ b/src/core/unit_tests/ExpressionParser_test.cpp
@@ -0,0 +1,72 @@
+/*
+ Copyright (C) 2017 The ESPResSo project
+
+ This file is part of ESPResSo.
+
+ ESPResSo is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ ESPResSo is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+#define BOOST_TEST_MODULE Expression parser test
+#define BOOST_TEST_DYN_LINK
+#include
+
+#include
+#include
+#include