smalltalk-tng

view etng-r1/repl-example.tng @ 321:c4a0718c2d3c

Sketch of dependencies
author Tony Garnock-Jones <tonygarnockjones@gmail.com>
date Sat Oct 08 15:36:03 2011 -0400 (7 months ago)
parents 85a2a4f498cd
children
line source
1 define etngEnv = [
2 .empty() = hashtable:empty;
3 ];
5 define etngRepl = [
6 .repl1(qnameEnv) ->
7 do ">>ETNG>> ".print();
8 do :stdout.flush();
9 let results = packrat:stdinResults();
10 etngParser.parse results {
11 .packrat:success ast ->
12 etngLanguage.toplevelCommand.matches(ast) {
13 .:true ->
14 let newEnv = etngEval(ast, qnameEnv);
15 newEnv;
16 .:false ->
17 do :newline();
18 do ";; Failed language check".println();
19 do ast.prettyPrint();
20 exit "Failed language check";
21 };
22 .packrat:failure error ->
23 do error.prettyPrint();
24 self.repl1(qnameEnv);
25 };
27 .main() ->
28 let r = self;
29 <r.initialEnvironment()> [e -> let e2 = r.repl1(e); self e2];
31 .initialEnvironment() = etngEnv.empty().extend("", "http://eighty-twenty.org/etng/r1/ns/etng#");
32 ];