[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.
|