2.2 Proparse.Net from C#

Here is a C# example which uses proparse.net.dll to print Proparse's syntax tree to the console:

using org.prorefactor.refactor;
using org.prorefactor.treeparser;

using System;
using System.Collections.Generic;
using System.Text;
using org.prorefactor.core;

namespace proparse.net {
class Program {

	int indent = 0;

	static void Main(string[] args) {
		if (args.Length < 2) {
			Console.WriteLine("Usage: TreePrint projectName fileName");
			return;
		}
		new Program().run(args[0], args[1]);
	}


	void run(String projectName, String fileName) {
		RefactorSession prsession = RefactorSession.getInstance();
		
		// Disable parser serialization.
		prsession.setProjectBinariesEnabledOff();

		prsession.loadProject(projectName);

		var f = new java.io.File(fileName);
		if (! f.exists()) {
			Console.WriteLine("Could not find file: " + fileName);
			return;
		}
		ParseUnit pu = new ParseUnit(f);
		pu.loadOrBuildPUB();
		walker(pu.getTopNode());
	}


	void walker(JPNode node) {
		if (node==null)
			return;
		for (int i = 0; i < indent; ++i)
			Console.Write("  ");
		Console.WriteLine(node.toString());
		indent++;
		walker(node.firstChild());
		indent--;
		walker(node.nextSibling());
	}


}
}