86{
90
91 const std::string sieve_of_eratosthenes_program =
92 " var sieve[10^8] := [false]; "
93 " var m := trunc(sqrt(sieve[])); "
94 " "
95 " sieve[0] := true; "
96 " sieve[1] := true; "
97 " "
98 " for (var i := 0; i <= m; i += 1) "
99 " { "
100 " if (false == sieve[i]) "
101 " { "
102 " for (var j := i^2; j < sieve[]; j += i) "
103 " { "
104 " sieve[j] := true; "
105 " } "
106 " } "
107 " }; "
108 " "
109 " var prime_count := sieve[] - sum(sieve); "
110 " "
111 " prime_count == 5761455; ";
112
114 loop_runtime_check.
loop_set = loop_runtime_check_t::e_all_loops;
116 static_cast<std::uint64_t>(10e8 * std::log10(std::log10(10e8)));
117
119
120 expression_t expression;
121
122 parser_t parser;
123
124 parser.register_loop_runtime_check(loop_runtime_check);
125 parser.register_vector_access_runtime_check(vec_rtc);
126
127 parser.compile(sieve_of_eratosthenes_program,expression);
128
129 const auto max_duration = std::chrono::seconds(1);
130 const auto timeout_tp = std::chrono::steady_clock::now() + max_duration;
132
133 try
134 {
135 expression.value();
136 }
138 {
139 printf("Timeout Exception\n");
140 }
141 catch (std::runtime_error& rte)
142 {
143 printf("Exception: %s\n",rte.what());
144 }
145
146 parser.clear_loop_runtime_check();
147}
details::_uint64_t max_loop_iterations
void set_timeout_time(const time_point_t &timeout_tp)