This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
40
unikernel/duniverse/ocaml-re/benchmarks/http.ml
Normal file
40
unikernel/duniverse/ocaml-re/benchmarks/http.ml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
open Re
|
||||
|
||||
let space = rep blank
|
||||
let crlf = str "\r\n"
|
||||
let token = rep1 @@ compl [ rg '\000' '\031'; set "\127)(<>@,;:\\/[]?={}" ]
|
||||
let meth = token
|
||||
|
||||
let version =
|
||||
let digits = rep1 digit in
|
||||
let decimal = seq [ digits; opt (seq [ char '.'; digits ]) ] in
|
||||
seq [ str "HTTP/"; decimal ]
|
||||
;;
|
||||
|
||||
let uri = rep1 (compl [ char '\n' ])
|
||||
let request_line = [ space; group meth; space; group uri; group version; space ] |> seq
|
||||
|
||||
let header =
|
||||
let key = group (rep1 (Re.compl [ char ':' ])) in
|
||||
let value = group (rep1 (Re.compl [ char '\n' ])) in
|
||||
seq [ space; key; space; char ':'; space; value; space; crlf ]
|
||||
;;
|
||||
|
||||
let request' = seq [ request_line; crlf; rep header; crlf ]
|
||||
|
||||
module Export = struct
|
||||
let request = request'
|
||||
let request_g = request' |> no_group
|
||||
let requests = request' |> rep1
|
||||
let requests_g = request' |> no_group |> rep1
|
||||
end
|
||||
|
||||
let requests = Stdio.In_channel.read_all "benchmarks/http-requests.txt"
|
||||
|
||||
let rec read_all pos re reqs =
|
||||
if pos < String.length reqs
|
||||
then (
|
||||
let g = Re.exec ~pos re reqs in
|
||||
let _, pos = Re.Group.offset g 0 in
|
||||
read_all (pos + 1) re reqs)
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue