# -*- tcl -*- # finite_automaton.test: tests for the grammar::fa::dexec engine # # Copyright (c) 2004-2007 by Andreas Kupries # # RCS: @(#) $Id: de_exec.test,v 1.6 2007/04/12 03:43:14 andreas_kupries Exp $ # ------------------------------------------------------------------------- # Regular expression for C comments (Extended notation, using the 'not' operator). # # '/' . '*' . (! (ALL* . '*' . '/' . ALL*)) . '*' . '/' # ALL = '/' | '*' | 'any' # # Generated minimal DFA # # any/ * # | | # 0 -/-> 1 -*-> 2 -*-> 3 -/-> 4 # \<-any-/ #puts -nonewline " RE compile, " ; flush stdout grammar::fa ccomments fromRegex {. {S /} {S *} {! {. {* {| {S *} {S /} {S any}}} {S *} {S /} {* {| {S *} {S /} {S any}}}}} {S *} {S /} } {/ * any} #puts -nonewline {FA, } ; flush stdout ccomments determinize ; #puts -nonewline {deterministic, } ; flush stdout ccomments minimize ; #puts minimal ; flush stdout # ------------------------------------------------------------------------- global events # ------------------------------------------------------------------------- test de-reset-${setimpl}-1.0 {reset error} { grammar::fa::dexec de ccomments -command {lappend events} catch {de reset x} msg de destroy set msg } {wrong # args: should be "::grammar::fa::dexec::Snit_methodreset type selfns win self"} # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreach {n string acceptany accept} { 0 {x y} {reset . error BADTRANS {Bad transition ("0" "any"), no destination} .} {reset . error BADSYM {Bad symbol "x"} .} 1 {/ * * /} {reset . state 1 . state 2 . state 3 . state 4 final 4} {reset . state 1 . state 2 . state 3 . state 4 final 4} 2 {/ * x * /} {reset . state 1 . state 2 . state 2 . state 3 . state 4 final 4} {reset . state 1 . state 2 . error BADSYM {Bad symbol "x"} . .} 3 {/ * * / * /} {reset . state 1 . state 2 . state 3 . state 4 final 4 . error BADTRANS {Bad transition ("4" "*"), no destination} .} {reset . state 1 . state 2 . state 3 . state 4 final 4 . error BADTRANS {Bad transition ("4" "*"), no destination} .} 4 {/ * x * / x * /} {reset . state 1 . state 2 . state 2 . state 3 . state 4 final 4 . error BADTRANS {Bad transition ("4" "any"), no destination} . .} {reset . state 1 . state 2 . error BADSYM {Bad symbol "x"} . . . . .} 5 {/ * * * / * * /} {reset . state 1 . state 2 . state 3 . state 3 . state 4 final 4 . error BADTRANS {Bad transition ("4" "*"), no destination} . .} {reset . state 1 . state 2 . state 3 . state 3 . state 4 final 4 . error BADTRANS {Bad transition ("4" "*"), no destination} . .} } { test de-put-${setimpl}-2.$n {put, -any any} { set events {} grammar::fa::dexec de ccomments -any any -command {lappend events} foreach sy $string { lappend events . de put $sy } de destroy set events } $acceptany ; # {} test de-put-${setimpl}-3.$n {put} { set events {} grammar::fa::dexec de ccomments -command {lappend events} foreach sy $string { lappend events . de put $sy } de destroy set events } $accept ; # {} } # ------------------------------------------------------------------------- ccomments destroy unset events ::tcltest::cleanupTests