[Toss-devel-svn] SF.net SVN: toss:[1656] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
From: <luk...@us...> - 2012-01-30 19:21:56
|
Revision: 1656 http://toss.svn.sourceforge.net/toss/?rev=1656&view=rev Author: lukaszkaiser Date: 2012-01-30 19:21:45 +0000 (Mon, 30 Jan 2012) Log Message: ----------- Small test correction, less Str in Structure. Modified Paths: -------------- trunk/Toss/Learn/LearnGameTest.ml trunk/Toss/Solver/Structure.ml Modified: trunk/Toss/Learn/LearnGameTest.ml =================================================================== --- trunk/Toss/Learn/LearnGameTest.ml 2012-01-30 15:14:41 UTC (rev 1655) +++ trunk/Toss/Learn/LearnGameTest.ml 2012-01-30 19:21:45 UTC (rev 1656) @@ -49,26 +49,26 @@ REL Win1() = ex x0 (Q(x0) and ex x1 R(x0, x1)) REL Win2() = ex x1 (Q(x1) and ex x0 R(x0, x1)) -RULE Mv1-0: +RULE Mv1r0: [e1 | P:1 {}; Q:1 {}; R:2 {} | ] -> [e1 | P (e1); Q:1 {}; R:2 {} | ] emb R,Q,P pre (true) and not Win2() -RULE Mv2-0: +RULE Mv2r0: [e1 | P:1 {}; Q:1 {}; R:2 {} | ] -> [e1 | P:1 {}; Q (e1); R:2 {} | ] emb R,Q,P pre (true) and not Win1() LOC 0 { PLAYER 1 { PAYOFF : (Win1()) - :(Win2()) - MOVES [Mv1-0 -> 1]} + MOVES [Mv1r0 -> 1]} PLAYER 2 { PAYOFF : (Win2()) - :(Win1()) } } LOC 1 { PLAYER 1 { PAYOFF :(Win1()) - :(Win2()) } PLAYER 2 { PAYOFF :(Win2()) - :(Win1()) - MOVES [Mv2-0 -> 0] } + MOVES [Mv2r0 -> 0]} } MODEL [ | P:1 {}; Q:1 {} | ] R R \" Modified: trunk/Toss/Solver/Structure.ml =================================================================== --- trunk/Toss/Solver/Structure.ml 2012-01-30 15:14:41 UTC (rev 1655) +++ trunk/Toss/Solver/Structure.ml 2012-01-30 19:21:45 UTC (rev 1656) @@ -1255,16 +1255,17 @@ let uniq = uniq1 @ uniq2 @ uniq3 in let lines = Str.split (Str.regexp "[\r\n]+\t*") board in let lines = List.filter (fun s->String.length s > 2) lines in - let rexp = - Str.regexp "[a-zA-Z0-9_ .*?#+-][a-zA-Z0-9_ .?#][a-zA-Z0-9_ .?#]" in - let split_line line = - List.map (function - | Str.Delim field -> assert (String.length field = 3); field - | Str.Text txt -> - raise (Board_parse_error - ("Unrecognized field line: \"" ^ txt ^ - "\" of board line: \"" ^ line ^"\""))) - (Str.full_split rexp line) in + let rec split_line line = + let is_ok c = c = ' ' || c = '.' || Aux.is_alphanum c || c = '_' || + c = '*' || c = '?' || c = '#' || c = '+' || c = '-' in + let error txt = raise (Board_parse_error + ("Unrecognized field line: \"" ^ txt ^ + "\" of board line: \"" ^ line ^"\"")) in + if line = "" then [] else if String.length line < 3 then error line else + if (is_ok line.[0] && is_ok line.[1] && is_ok line.[2]) then + let rest = String.sub line 3 ((String.length line) - 3) in + (String.sub line 0 3) :: (split_line rest) + else error (String.sub line 0 3) in let rec rev_combine_pairs acc = function | [] -> acc | [hd] -> @@ -1284,7 +1285,7 @@ else let fields = ref fields in let parse s = - let s = Str.string_before s + let s = String.sub s 0 (min (try String.index s ' ' with Not_found -> 3) (try String.index s '.' with Not_found -> 3)) in let sl = String.length s - 1 in @@ -1295,12 +1296,12 @@ else if s.[0] = '*' then ["*"] (* treated specially *) else if sl = 0 && s.[sl] = '?' then ["_any_"] else if s.[0] = '+' then - let p = unabbrev (omit 1 s) in ["_new_"^p; p] + let p = unabbrev (omit 1 s) in ["_new_" ^ p; p] else if s.[0] = '-' then ["_del_"^unabbrev (omit 1 s)] - else if s.[sl] = '?' then [unabbrev (Str.string_before s sl); "_any_"] + else if s.[sl] = '?' then [unabbrev (String.sub s 0 sl); "_any_"] else if s.[0] = '?' then ["_opt_"^unabbrev (omit 1 s)] else if s.[sl] = '#' then - ["_diffthan_"^unabbrev (Str.string_before s sl); "_any_"] + ["_diffthan_" ^ unabbrev (String.sub s 0 sl); "_any_"] else if s.[0] = '#' then ["_diffthan_"^unabbrev (omit 1 s)] else [unabbrev s] in let board_els = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |