Produce a full syntactic tree for a given stream of character

Produce also statistics and output files

Property definitions

nitcc_runtime $ TestParser :: work
	# Produce a full syntactic tree for a given stream of character
	# Produce also statistics and output files
	fun work(text: String): Node
	do
		print "INPUT: {text.length} chars"
		var l = new_lexer(text)
		var tokens = l.lex

		var tokout = "{name}.tokens.out"
		print "TOKEN: {tokens.length} tokens (see {tokout})"

		var f = new FileWriter.open(tokout)
		for t in tokens do
			f.write "{t.to_s}\n"
		end
		f.close

		var p = new_parser
		p.tokens.add_all(tokens)

		var n = p.parse

		var astout = "{name}.ast.out"
		f = new FileWriter.open(astout)
		var tpv = new TreePrinterVisitor(f)
		var astdotout = "{name}.ast.dot"
		if n isa NError then
			print "Syntax error: {n.message}"
			print "ERROR: {n} (see {astout} and {astdotout})"
			tpv.enter_visit(n)
			n = n.error_tree
		else
			print "ROOT: {n}; {n.depth.length} nodes (see {astout} and {astdotout})"
		end
		tpv.enter_visit(n)
		n.to_dot(astdotout)
		f.close

		return n
	end
lib/nitcc_runtime/nitcc_runtime.nit:632,2--671,4