Mercurial > repos > tabletprog
comparison 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 |
comparison
equal
deleted
inserted
replaced
44:9dd370530f69 | 45:2a9c6eed0c70 |
---|---|
15 PEG = module.exports; | 15 PEG = module.exports; |
16 load('parser.js'); | 16 load('parser.js'); |
17 load('compiler.js'); | 17 load('compiler.js'); |
18 load('cbackend.js'); | 18 load('cbackend.js'); |
19 try { | 19 try { |
20 var parsed = parser.parse(text); | 20 var parsed = parser.parse(text); |
21 var c = parsed.toCModule(); | 21 } catch (e) { |
22 print(c); | |
23 } catch(error if error.name == 'SyntaxError') { | |
24 print('SyntaxError on at', error.line, ',', error.column, ':', error.message); | 22 print('SyntaxError on at', error.line, ',', error.column, ':', error.message); |
25 var lines = text.split('\n'); | 23 var lines = text.split('\n'); |
26 print(lines[error.line-1]); | 24 print(lines[error.line-1]); |
27 var spacer = ''; | 25 var spacer = ''; |
28 for (var i = 1; i < error.column; i++) { | 26 for (var i = 1; i < error.column; i++) { |
31 } else { | 29 } else { |
32 spacer += ' '; | 30 spacer += ' '; |
33 } | 31 } |
34 } | 32 } |
35 print(spacer + '^'); | 33 print(spacer + '^'); |
36 | 34 exit(1); |
37 } | 35 } |
36 var c = parsed.toCModule(); | |
37 print(c); | |
38 } | 38 } |