Make sure the lambda-lifter covers the demo program.
This commit is contained in:
Jonathan Protzenko 2015-04-14 15:50:13 -07:00
Родитель d67c0dbb84
Коммит 23aadb4d52
6 изменённых файлов: 44 добавлений и 8 удалений

Просмотреть файл

@ -74,3 +74,5 @@ module TDev {
}
}
}
// vim: set ts=2 sw=2 sts=2:

Просмотреть файл

@ -71,3 +71,5 @@ module TDev {
}
}
}
// vim: set ts=2 sw=2 sts=2:

Просмотреть файл

@ -23,8 +23,26 @@ module TDev {
return as;
}
// [InlineActions] are just at the level of statements.
public visitExpr(env, e: J.JNode) {
return [];
}
public visitExprStmt(env, expr) {
return [];
}
public visitInlineActions(env, e: J.JExpr, actions: J.JInlineAction[]) {
return this.visitMany(e, actions).concat(actions);
// No need to visit [e], as expressions do not contain [JInlineActions].
return this.visitMany(env, actions).concat(actions);
}
public visitInlineAction(env, r, i, o, body: J.JStmt[]) {
return this.visitMany(env, body);
}
public visitWhile(env, cond, body: J.JStmt[]) {
return this.visitMany(env, body);
}
public visitAction(
@ -37,6 +55,10 @@ module TDev {
return this.visitMany(env, body);
}
public visitLibrary(env, name) {
return [];
}
public visitApp(e, decls: J.JDecl[]) {
return this.visitMany(e, decls);
}
@ -68,3 +90,5 @@ module TDev {
}
}
}
// vim: set ts=2 sw=2 sts=2:

Просмотреть файл

@ -1,12 +1,14 @@
///<reference path='../refs.ts'/>
module TDev {
import J = AST.Json
import J = AST.Json
export module Microbit {
export function compile(a: J.JApp): string {
lift(a);
return (new Emitter()).visit(emptyEnv, a);
}
export module Microbit {
export function compile(a: J.JApp): string {
lift(a);
return (new Emitter()).visit(emptyEnv, a);
}
}
}
// vim: set ts=2 sw=2 sts=2:

Просмотреть файл

@ -55,7 +55,10 @@ module TDev {
return this.visitAction(env, n7.name, n7.inParameters, n7.outParameters, n7.body);
case "app":
return this.visitApp(env, (<J.JApp> n).decls);
case "library":
return this.visitLibrary(env, (<J.JLibrary> n).scriptName);
}
throw "Unsupported node: "+n.nodeType;
}
public visitNumberLiteral(env: T, v: number): U { throw "Not implemented"; }
@ -101,7 +104,10 @@ module TDev {
outParams: J.JLocalDef[],
body: J.JStmt[]): U { throw "Not implemented"; }
public visitApp(env: T, decls: J.JDecl[]): U { throw "Not implemented"; }
public visitLibrary(env: T, name: string): U { throw "Not implemented"; }
}
}
}
// vim: set ts=2 sw=2 sts=2:

Просмотреть файл

@ -52,8 +52,8 @@
///<reference path='../intellitrain/features.ts'/>
///<reference path='../intellitrain/output.ts'/>
///<reference path='../intellitrain/tokenize.ts'/>
///<reference path='microbit/helpers.ts'/>
///<reference path='microbit/main.ts'/>
///<reference path='microbit/visitor.ts'/>
///<reference path='microbit/emitter.ts'/>
///<reference path='microbit/helpers.ts'/>
///<reference path='microbit/lambda_lifter.ts'/>