C++ compiler.
Make sure the lambda-lifter covers the demo program.
This commit is contained in:
Родитель
d67c0dbb84
Коммит
23aadb4d52
|
@ -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'/>
|
||||
|
|
Загрузка…
Ссылка в новой задаче