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 ];
