nitcc_runtime :: TestParser :: main
Use the class as the main enrty point of the programnitcc_runtime :: TestParser :: name
The name of the language (used for generated files)nitcc_runtime :: TestParser :: new_lexer
How to get a new lexer on a given stream of characternitcc_runtime :: TestParser :: work
Produce a full syntactic tree for a given stream of characternitcc_runtime $ TestParser :: SELF
Type of this instance, automatically specialized in every classcore :: Object :: class_factory
Implementation used byget_class to create the specific class.
			core :: Object :: defaultinit
core :: Object :: is_same_instance
Return true ifself and other are the same instance (i.e. same identity).
			core :: Object :: is_same_serialized
Isself the same as other in a serialization context?
			core :: Object :: is_same_type
Return true ifself and other have the same dynamic type.
			nitcc_runtime :: TestParser :: main
Use the class as the main enrty point of the programnitcc_runtime :: TestParser :: name
The name of the language (used for generated files)nitcc_runtime :: TestParser :: new_lexer
How to get a new lexer on a given stream of charactercore :: Object :: output_class_name
Display class name on stdout (debug only).nitcc_runtime :: TestParser :: work
Produce a full syntactic tree for a given stream of character
# All-in-one abstract class to test generated parsers on a given
abstract class TestParser
	# How to get a new lexer on a given stream of character
	fun new_lexer(text: String): Lexer is abstract
	# How to get a new parser
	fun new_parser: Parser is abstract
	# The name of the language (used for generated files)
	fun name: String is abstract
	# Use the class as the main enrty point of the program
	# - parse arguments and options of the command
	# - test the parser (see `work`)
	fun main: Node
	do
		if args.is_empty then
			print "usage {name}_test <filepath> | - | -e <text>"
			exit 0
		end
		var filepath = args.shift
		var text
		if filepath == "-" then
			text = sys.stdin.read_all
		else if filepath == "-e" then
			if args.is_empty then
				print "Error: -e need a text"
				exit 1
			end
			text = args.shift
		else
			var f = new FileReader.open(filepath)
			text = f.read_all
			f.close
		end
		if not args.is_empty then
			print "Error: superfluous arguments."
			exit 1
		end
		return work(text)
	end
	# 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
end
					lib/nitcc_runtime/nitcc_runtime.nit:592,1--677,3