OCaml parser combinator that compiles to direct recursive descent
5

Configure Feed

Select the types of activity you want to include in your feed.

eliminate redundant List.rev when result is discarded

+10
+10
src/optimise.ml
··· 14 14 | SeqRight { p; q; loc } -> 15 15 let p' = optimise p in 16 16 let q' = optimise q in 17 + let p' = match p' with 18 + | Many { p = inner; loc = l } -> SkipMany { loc = l; p = inner } 19 + | Some_ { p = inner; loc = l } -> SkipSome { loc = l; p = inner } 20 + | _ -> p' 21 + in 17 22 (match p' with 18 23 | Pure _ -> q' 19 24 | _ -> SeqRight { loc; p = p'; q = q' }) ··· 21 26 | SeqLeft { p; q; loc } -> 22 27 let p' = optimise p in 23 28 let q' = optimise q in 29 + let q' = match q' with 30 + | Many { p = inner; loc = l } -> SkipMany { loc = l; p = inner } 31 + | Some_ { p = inner; loc = l } -> SkipSome { loc = l; p = inner } 32 + | _ -> q' 33 + in 24 34 (match q' with 25 35 | Pure _ -> p' 26 36 | _ -> SeqLeft { loc; p = p'; q = q' })