C++ Mathematical Expression Library (ExprTk)  https://www.partow.net/programming/exprtk/index.html
diff --git a/exprtk_simple_example_18.cpp b/exprtk_simple_example_18.cpp
new file mode 100644
index 0000000..afdd674
--- /dev/null
+++ b/exprtk_simple_example_18.cpp
@@ -0,0 +1,79 @@
+/*
+ **************************************************************
+ *         C++ Mathematical Expression Toolkit Library        *
+ *                                                            *
+ * Simple Example 18                                          *
+ * Author: Arash Partow (1999-2016)                           *
+ * URL: http://www.partow.net/programming/exprtk/index.html   *
+ *                                                            *
+ * Copyright notice:                                          *
+ * Free use of the Mathematical Expression Toolkit Library is *
+ * permitted under the guidelines and in accordance with the  *
+ * most current version of the Common Public License.         *
+ * http://www.opensource.org/licenses/cpl1.0.php              *
+ *                                                            *
+ **************************************************************
+*/
+
+
+#include <cstdio>
+#include <string>
+
+#include "exprtk.hpp"
+
+
+template <typename T>
+void file_io()
+{
+   typedef exprtk::symbol_table<T> symbol_table_t;
+   typedef exprtk::expression<T>     expression_t;
+   typedef exprtk::parser<T>             parser_t;
+
+   std::string fileio_program =
+                " var file_name := 'file.txt';                         "
+                " var stream    := null;                               "
+                "                                                      "
+                " if (stream := open('file.txt','w'))                  "
+                "   println('Successfully opened file: ' + file_name); "
+                " else                                                 "
+                " {                                                    "
+                "   println('Failed to open file: ' + file_name);      "
+                "   return [false];                                    "
+                " }                                                    "
+                "                                                      "
+                " var s := 'Hello world...\n';                         "
+                "                                                      "
+                " for (var i := 0; i < 10; i += 1)                     "
+                " {                                                    "
+                "   write(stream,s);                                   "
+                " }                                                    "
+                "                                                      "
+                " if (close(stream))                                   "
+                "   println('Sucessfully closed file: ' + file_name);  "
+                " else                                                 "
+                " {                                                    "
+                "   println('Failed to close file: ' + file_name);     "
+                "   return [false];                                    "
+                " }                                                    ";
+
+   exprtk::rtl::io::println<T>       println;
+   exprtk::rtl::io::file::package<T> package;
+
+   symbol_table_t symbol_table;
+   symbol_table.add_function("println",println);
+   symbol_table.add_package (package);
+
+   expression_t expression;
+   expression.register_symbol_table(symbol_table);
+
+   parser_t parser;
+   parser.compile(fileio_program,expression);
+
+   printf("Result %10.3f\n",expression.value());
+}
+
+int main()
+{
+   file_io<double>();
+   return 0;
+}