54{
58 typedef typename parser_t::settings_store settings_t;
59
60 sine_deg <T> sine;
62
64
65 symbol_table_t symbol_table;
66
67 symbol_table.add_package (io_package );
68 symbol_table.add_reserved_function("sin", sine );
69 symbol_table.add_reserved_function("cos", cosine);
70
71 typedef typename parser_t::settings_store settings_t;
72
73 parser_t parser;
74
75
76 parser.settings()
77 .disable_base_function(settings_t::e_bf_sin)
78 .disable_base_function(settings_t::e_bf_cos);
79
80 const std::string trigonometry_program =
81 " println('sin(30) = ', sin(30)); "
82 " println('cos(30) = ', cos(30)); "
83 " println('sin(45) = ', sin(45)); "
84 " println('cos(45) = ', cos(45)); "
85 " println('sin(60) = ', sin(60)); "
86 " println('cos(60) = ', cos(60)); ";
87
88 expression_t expression;
89 expression.register_symbol_table(symbol_table);
90
91 parser.compile(trigonometry_program,expression);
92
93 expression.value();
94}