| 25 | |
| 26 | template <typename T> |
| 27 | void file_io() |
| 28 | { |
| 29 | typedef exprtk::symbol_table<T> symbol_table_t; |
| 30 | typedef exprtk::expression<T> expression_t; |
| 31 | typedef exprtk::parser<T> parser_t; |
| 32 | |
| 33 | const std::string fileio_program = |
| 34 | " var file_name := 'file.txt'; " |
| 35 | " var stream := null; " |
| 36 | " " |
| 37 | " if (stream := open(file_name,'w')) " |
| 38 | " println('Successfully opened file: ' + file_name); " |
| 39 | " else " |
| 40 | " { " |
| 41 | " println('Failed to open file: ' + file_name); " |
| 42 | " return [false]; " |
| 43 | " }; " |
| 44 | " " |
| 45 | " var s := 'Hello world...\n'; " |
| 46 | " " |
| 47 | " for (var i := 0; i < 10; i += 1) " |
| 48 | " { " |
| 49 | " write(stream,s); " |
| 50 | " }; " |
| 51 | " " |
| 52 | " if (close(stream)) " |
| 53 | " println('Sucessfully closed file: ' + file_name); " |
| 54 | " else " |
| 55 | " { " |
| 56 | " println('Failed to close file: ' + file_name); " |
| 57 | " return [false]; " |
| 58 | " } "; |
| 59 | |
| 60 | exprtk::rtl::io::file::package<T> fileio_package; |
| 61 | exprtk::rtl::io::println<T> println; |
| 62 | |
| 63 | symbol_table_t symbol_table; |
| 64 | symbol_table.add_function("println",println); |
| 65 | symbol_table.add_package (fileio_package ); |
| 66 | |
| 67 | expression_t expression; |
| 68 | expression.register_symbol_table(symbol_table); |
| 69 | |
| 70 | parser_t parser; |
| 71 | parser.compile(fileio_program,expression); |
| 72 | |
| 73 | printf("Result %10.3f\n",expression.value()); |
| 74 | } |
| 75 | |
| 76 | int main() |
| 77 | { |