view tpc.js @ 45:2a9c6eed0c70

Move closure/lambda object def into compiler rather than runtime code. Add while:do method to lambda
author Mike Pavone <pavone@retrodev.com>
date Fri, 13 Jul 2012 00:23:38 -0700
parents 9dd370530f69
children 3e8d2a91102c
line wrap: on
line source

var module = {exports: {}};
var PEG;

if (arguments.length < 1) {
	print('usage: d8 tpc.js -- filename');
	os.exit();
} else {
	compileFile(arguments[0]);
}

function compileFile(filename)
{
	var text = read(filename);
	load('peg.js');
	PEG = module.exports;
	load('parser.js');
	load('compiler.js');
	load('cbackend.js');
	try {
		var parsed = parser.parse(text);	
	} catch (e) {
		print('SyntaxError on at', error.line, ',', error.column, ':', error.message);
		var lines = text.split('\n');
		print(lines[error.line-1]);
		var spacer = '';
		for (var i = 1; i < error.column; i++) {
			if (lines[error.line-1].charAt(i-1) == '\t') {
				spacer += '    ';
			} else {
				spacer += ' ';
			}
		}
		print(spacer + '^');
		exit(1);
	}
	var c = parsed.toCModule();
	print(c);
}