2020-01-22 22:30:34 +03:00
|
|
|
import Ostap;
|
|
|
|
|
import List;
|
|
|
|
|
import Fun;
|
|
|
|
|
|
|
|
|
|
fun many (a) {
|
|
|
|
|
memo (
|
2021-01-12 01:14:18 +03:00
|
|
|
eta (
|
2020-01-22 22:30:34 +03:00
|
|
|
empty @ lift({})
|
2021-01-12 01:14:18 +03:00
|
|
|
| many (a) |> fun (as) {a @ fun (x) {as +++ singleton (x)}}
|
|
|
|
|
)
|
2020-01-22 22:30:34 +03:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local a = token ("a"), b = token ("b");
|
|
|
|
|
local bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}};
|
|
|
|
|
|
2020-01-30 23:36:15 +03:00
|
|
|
--logOn ();
|
2020-01-22 22:30:34 +03:00
|
|
|
printf ("Parsing ""aaa"" with many ... %s\n", parseString (many (a) |> bypass (eof), "aaa").string);
|
|
|
|
|
printf ("Parsing ""ab"" with bad_alter ... %s\n", parseString (bad_alter |> bypass (eof), "ab").string)
|