// main-s.txt
//   public release som v3.0 	5 March 2007 (Maka-bucha day)
//   public release som v3.1 	19 Aug 2007 (Draft vote day)
//   public release som v4.0    2 July 2008
//   public release som v4.1    9 Aug 2008 (Birthday)
//   public release som v4.2    9 Sept 2009 (triple 9, 9/9/2009)

//  system area  1 .. MAXSYS-1
//   1..80   tokstring-som
//   101     mode ads
//   110..149 "inputfile"  som-string
//   150..199 "input.lst"  som-string
//   200..249 "input.obj"  som-string

enum
	110 src_file
enum
	150 lst_file
enum
	200 obj_file

to parse | f e tk =
	setcdr im NIL		// clear im
	startlex
	lex
	while tok != tkEOF
		tk = tok
		f = top			// parse, throw away flag
		e = ypop
		if (tk == tkTO) | (tk == tkCOLON)
			def = append def e
//			genex e
		else
			im = append im e

to init_all =
	initSom
	init_list
	def = list newatom OPER tkBB
	im = list newatom OPER tkBB
	initkeysym
	hSym = array hSymsize
	initlex
//	clearlis relis

to loadfile fn =
	if verbose
		prints "load " prints fn nl
	FI = fopen fn 0
	cmode = 0
	parse
	fclose FI
//	runimm im

// read-eval-print loop, stdin
//to rep =
//	while 1
//		FI = 0		// stdin
//		cmode = 2	// interactive
//		printc 62	// >
//		parse
//		runimm im

to main =
	init_all
	userDS = array 0		// start of user ds
	loadfile "lib2.som"
	loadfile src_file		// parse only
	prlist def

//	if M[mode_ads] == 1		// mode 1 interact, 2 compile&run
//		rep
//	else
//		loadfile src_file
//		genfinal
//		hashSym
//		listing lst_file
//		outobj obj_file


// End
