diff options
Diffstat (limited to 'test/ragel.d/atoi4.rl')
-rw-r--r-- | test/ragel.d/atoi4.rl | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/test/ragel.d/atoi4.rl b/test/ragel.d/atoi4.rl deleted file mode 100644 index 04b678f9..00000000 --- a/test/ragel.d/atoi4.rl +++ /dev/null @@ -1,73 +0,0 @@ -(* - * @LANG: ocaml - *) - -let id x = x -let fail fmt = Printf.ksprintf failwith fmt -let pr fmt = Printf.ksprintf print_endline fmt - -let failed fmt = Printf.ksprintf (fun s -> prerr_endline s; exit 1) fmt -let test' show f x y = if f x <> y then failed "FAILED: test %S" (show x) -let case = ref 0 -let test f x y = incr case; if f x <> y then failed "FAILED: case %d" !case -let error f x = match try Some (f x) with _ -> None with Some _ -> failed "FAILED: fail %S" x | None -> () - -%%{ - machine atoi; - write data; -}%% - -let fail fmt = Printf.ksprintf failwith fmt - -let atoi data = - let cs = ref 0 in - let p = ref 0 in - let pe = ref (String.length data) in - let neg = ref false in - let res = ref 0 in - - %%{ - action see_neg { neg := true; } - action add_digit { res := !res * 10 + (fc - Char.code '0'); } - - main := - ( '-'@see_neg | '+' )? ( digit @add_digit )+ - '\n'? - ; - - write init; - write exec; - }%% - - if !neg then - res := (-1) * !res ; - - print_int res.contents; - print_string "\n"; - - if !cs < atoi_first_final then - fail "atoi: cs %d < %d" !cs atoi_first_final; - - !res -;; - -let () = - let t = test atoi in - t "7" 7; - t "666" 666; - t "-666" (-666); - t "+666" 666; - t "123456789" 123456789; - t "+123456789\n" 123456789; - error atoi "+ 1234567890"; - () -;; - -##### OUTPUT ##### -7 -666 --666 -666 -123456789 -123456789 -0 |