by admin
I ported my javascript game ‘The 12 Balls Game’ to caanoo and made a new web page for it, The 12 Balls Game.
Also I have made a new download section and add it the latex source of my CV and the 12 Balls game page as a template.
I Should start to clean a little my dev blog…
by admin
The next code, is a file that I use to test librfa features, there is tests for cleaning useless states, converting simple non-deterministic automata and call/recursive automata to deterministic representation (when possible).
A automatic report is generated from tested words, a log is presented and a few representation of the resulting automata.
/*
Test battery for librfa.
run: ../tools/nrfa/nrfa -p tests_result -rhtml basic.nrfa
*/
start q0;
final q1;
q0 q2 -> q1;
q2 'a' -> q1;
#test test_q0 q0
a
;
#test test_q2 q2
a
;
start clean_1_q0;
final clean_1_q1;
clean_1_q0 'a' -> clean_1_q1;
clean_1_q1 'b' -> clean_1_q2;
#test test_clean_1_t1 clean_1_q0
a
;
#test test_clean_2_t2 clean_1_q0 fail
ab
;
start clean_2_q0;
final clean_2_q1;
clean_2_q0 clean_2_call -> clean_2_q1;
#test test_clean_2_t1 clean_2_q0 fail
a
;
/*
Test basic sequence.
*/
start abc;
final abc_final;
abc 'a' -> abc_b;
abc_b 'b' -> abc_c;
abc_c 'c' -> abc_final;
#test test_abc_1 abc
abc
;
#test test_abc_2 abc fail
a
;
#test test_abc_3 abc fail
ab
;
#test test_abc_4 abc fail
abd
;
/*
Island
*/
island 'a' -> my_island;
/*
Test island.
*/
#test test_island island fail
a
;
/*
Det
*/
start det;
final det1;
final det2;
det 'a' -> det1;
det 'a' -> det2;
#test test_det det
a
;
start det_ab;
final det_ab_3;
final det_ab_4;
det_ab 'a' -> det_ab_1;
det_ab 'a' -> det_ab_2;
det_ab_1 'b' -> det_ab_3;
det_ab_2 'b' -> det_ab_4;
#test test_det_ab det_ab
ab
;
/*
Call
*/
start call_q0;
final call_q1;
call_q0 call_1_q0 -> call_q1;
start call_1_q0;
final call_1_q1;
call_1_q0 'a' -> call_1_q1;
#test test_call call_q0
a
;
/*
Equal Call
*/
start call_2_q0;
final call_2_q1;
final call_2_q2;
call_2_q0 call_1_q0 -> call_2_q1;
call_2_q0 call_1_q0 -> call_2_q2;
#test test_2_call call_2_q0
a
;
/*
Diferent call same symbols
*/
start call_3_q0;
final call_3_q1;
call_3_q0 call_abc -> call_3_q1;
call_3_q0 call_abcd -> call_3_q1;
start call_abc;
final call_abc_q3;
call_abc 'a' -> call_abc_q1;
call_abc_q1 'b' -> call_abc_q2;
call_abc_q2 'c' -> call_abc_q3;
start call_abcd;
final call_abcd_q4;
call_abcd 'a' -> call_abcd_q1;
call_abcd_q1 'b' -> call_abcd_q2;
call_abcd_q2 'c' -> call_abcd_q3;
call_abcd_q3 'd' -> call_abcd_q4;
#test test_call_3_1 call_3_q0
abc
;
#test test_call_3_2 call_3_q0
abcd
;
/*
call at diferent level.
*/
start statename;
final statename_q1;
statename 'a' -> statename_q1 $saveChar;
statename_q1 digit -> statename_q1 $saveChar;
start digit;
final digit_q1;
digit '0' -> digit_q1 $saveChar;
#test test_digit digit
0
;
#test test_statename statename
a
;
#test test_statename_2 statename
a0
;
/*
Call determinism
*/
/*
zero_ab
*/
start zero_ab;
final zero_ab_q1;
zero_ab zero_a -> zero_ab_q1 $saveCall;
zero_ab zero_b -> zero_ab_q1 $saveMin;
#test test_zero_ab_1 zero_ab
00
;
#test test_zero_ab_2 zero_ab
000
;
/*
a
*/
start zero_a;
final zero_a_q1;
zero_a '0' -> zero_a_q1 $saveChar;
zero_a_q1 '0' -> zero_a_q1 $saveChar;
#test test_zero_a_1 zero_a
00
;
#test test_zero_a_2 zero_a
000
;
/* ----
zero_b
*/
start zero_b;
final zero_b_q1;
zero_b '0' -> zero_b_q1 $saveb;
zero_b_q1 '0' -> zero_b_q1 $saveb;
#test test_zero_b_1 zero_b
000
;
#test test_zero_b_2 zero_b
00
;
/*
aa rule
*/
start aa_rule;
final aa_rule_qf4;
final aa_rule_s5;
aa_rule 'a' -> aa_rule_qf1;
aa_rule_qf1 'a' -> aa_rule_qf2;
aa_rule_qf2 ' ' -> aa_rule_qf3;
aa_rule_qf3 a_kleene_star -> aa_rule_qf4;
aa_rule a_kleene_star -> aa_rule_s1;
aa_rule_s1 ' ' -> aa_rule_s2;
aa_rule_s2 a_kleene_star -> aa_rule_s3;
aa_rule_s3 ' ' -> aa_rule_s4;
aa_rule_s4 a_kleene_star -> aa_rule_s5;
start a_kleene_star;
final a_kleene_star_q1;
a_kleene_star 'a' -> a_kleene_star_q1 $saveChar;
a_kleene_star_q1 'a' -> a_kleene_star_q1 $saveChar;
#test test_final aa_rule
aa aaa
;
#test test_state aa_rule
aa a aa
;
#test test_state2 aa_rule
aaa aaa aaa
;
/*
zero_one_ab.
*/
start zero_one_ab;
final zero_one_ab_q1;
final zero_one_ab_q2;
zero_one_ab zero_one_a -> zero_one_ab_q1 $saveCall;
zero_one_ab zero_one_b -> zero_one_ab_q2 $saveMin;
#test test_zero_one_ab_1 zero_one_ab
00
;
#test test_zero_one_ab_2 zero_one_ab
000001001000
;
/*
zero_one (0/1)
*/
start zero_one_a;
final zero_one_a_q1;
zero_one_a '0' -> zero_one_a_q1 $saveChar;
zero_one_a_q1 '0' -> zero_one_a_q1 $saveChar;
zero_one_a_q1 '1' -> zero_one_a_q1 $saveChar;
#test test_zero_one_a_1 zero_one_a
001010
;
#test test_zero_one_a_2 zero_one_a
000
;
/* ----
zero_one_b 0*
*/
start zero_one_b;
final zero_one_b_q1;
zero_one_b '0' -> zero_one_b_q1 $saveb;
zero_one_b_q1 '0' -> zero_one_b_q1 $saveb;
#test test_zero_one_b_1 zero_one_b
000
;
#test test_zero_one_b_2 zero_one_b
00
;
Tests Total:34
Tests Fail:0