mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
19 lines
No EOL
492 B
Text
19 lines
No EOL
492 B
Text
import Ostap;
|
|
import List;
|
|
import Fun;
|
|
|
|
fun many (a) {
|
|
memo (
|
|
eta (
|
|
empty @ lift({})
|
|
| many (a) |> fun (as) {a @ fun (x) {as +++ singleton (x)}}
|
|
)
|
|
)
|
|
}
|
|
|
|
local a = token ("a"), b = token ("b");
|
|
local bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}};
|
|
|
|
--logOn ();
|
|
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) |