dice: adding some tests, simplify a bit.
parent
5130954591
commit
cf3c0d96a1
|
@ -0,0 +1,5 @@
|
||||||
|
USING: math random tools.test ;
|
||||||
|
IN: dice
|
||||||
|
|
||||||
|
{ [ 0 1 [ 4 random + 1 + ] times ] } [ "1d4" parse-roll ] unit-test
|
||||||
|
{ [ 0 15 [ 45 random + 1 + ] times ] } [ "15d45" parse-roll ] unit-test
|
|
@ -1,14 +1,12 @@
|
||||||
! Copyright (C) 2010 John Benediktsson
|
! Copyright (C) 2010 John Benediktsson
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
USING: fry kernel lexer macros math math.parser peg.ebnf random
|
USING: fry kernel lexer macros math math.parser peg.ebnf random
|
||||||
sequences strings ;
|
sequences ;
|
||||||
|
|
||||||
IN: dice
|
IN: dice
|
||||||
|
|
||||||
EBNF: parse-roll
|
EBNF: parse-roll
|
||||||
|
|
||||||
number = ([0-9])+ => [[ >string string>number ]]
|
number = ([0-9])+ => [[ string>number ]]
|
||||||
dice = "d" number => [[ second '[ _ random ] ]]
|
dice = "d" number => [[ second '[ _ random ] ]]
|
||||||
roll = number dice => [[ first2 '[ 0 _ [ @ + 1 + ] times ] ]]
|
roll = number dice => [[ first2 '[ 0 _ [ @ + 1 + ] times ] ]]
|
||||||
added = "+" number => [[ second '[ _ + ] ]]
|
added = "+" number => [[ second '[ _ + ] ]]
|
||||||
|
@ -20,5 +18,4 @@ rolls = total | error
|
||||||
|
|
||||||
MACRO: roll ( string -- ) parse-roll ;
|
MACRO: roll ( string -- ) parse-roll ;
|
||||||
|
|
||||||
SYNTAX: ROLL: scan-token parse-roll append ;
|
SYNTAX: ROLL: scan-token parse-roll append! ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue