/*
 * Copyright 1990 by Baylor College of Medicine ALL RIGHTS RESERVED. 
 *
 * This program is subject to a license agreement between 
 * Baylor College of Medicine and MIT. Any use inconsistent with
 * said license and any use by persons other than the faculty, 
 * students and staff at MIT or any use on a computer not operated 
 * as part of the Athena Computing Environment (ACE) is expressly 
 * prohibited.
 */
#include <stdio.h>
#include <dfa.h>

main(argc,argv)
	char *argv[] ;
{
	static char *nclass[] = {"0123456789"} ;
	static char *plusminus[] = {"+-"} ;

	Dfa digs = dfa_pclosure(1,dfa_pattern_string(0,nclass,1)) ;
	Dfa sdigs = dfa_concat(4,dfa_zero(3,dfa_pattern_string(6,plusminus,1)),digs) ;
	Dfa exp = dfa_zero(11,dfa_concat(5,dfa_string(2,"e",0),sdigs)) ;
	Dfa num = dfa_concat(10,digs,dfa_zero(9,dfa_concat(8,dfa_string(7,".",0),dfa_concat(6,digs,exp)))) ;

	Dfa qu = dfa_string(12,"'") ;
	Dfa q2 = dfa_concat(13,qu,qu) ;
	Dfa anychar = dfa_union(15,dfa_wild_nchar(14,1),q2) ;
	Dfa quoted_string = dfa_concat(18,dfa_concat(17,qu,dfa_closure(16,anychar)),qu) ;

	static char *l1class[] = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"} ;
	static char *l2class[] = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789"} ;

	Dfa id = dfa_concat(22,dfa_pattern_string(19,l1class,1),dfa_pclosure(21,dfa_pattern_string(20,l2class,1))) ;

	write_dfa("qstr.dfa",quoted_string) ;
	write_dfa("num.dfa",num) ;
	write_dfa("id.dfa",id) ;
}
