Mercurial Hosting > luan
diff core/src/luan/impl/ThemeParser.java @ 667:08966099aa6d
implement Closure directly
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 08 Apr 2016 07:00:17 -0600 |
parents | 71f8f5075df8 |
children | 58ebfec6178b |
line wrap: on
line diff
--- a/core/src/luan/impl/ThemeParser.java Thu Apr 07 23:36:56 2016 -0600 +++ b/core/src/luan/impl/ThemeParser.java Fri Apr 08 07:00:17 2016 -0600 @@ -15,6 +15,7 @@ public final class ThemeParser { public static LuanFunction compile(LuanState luan,String sourceName,String sourceText) throws LuanException { +/* try { FnDef fnDef = new ThemeParser(sourceName,sourceText).parse(); final LuanStateImpl luanImpl = (LuanStateImpl)luan; @@ -23,6 +24,8 @@ //e.printStackTrace(); throw new LuanException( e.getFancyMessage() ); } +*/ + return null; } private static final class Frame { @@ -106,7 +109,7 @@ frame.stackSize = symbolsSize(); } - private FnDef newFnDef(Stmt stmt) { + private Class newFnDef(Stmt stmt) { // return new FnDef( /*stmt*/null, frame.stackSize, symbolsSize(), frame.isVarArg, frame.upValueGetters.toArray(NO_UP_VALUE_GETTERS) ); return null; } @@ -135,7 +138,7 @@ return new GetLocalVar(stackIndex(ENV)); } - private FnDef parse() throws ParseException { + private Class parse() throws ParseException { List<Stmt> stmts = new ArrayList<Stmt>(); int stackStart = symbolsSize(); { @@ -161,7 +164,7 @@ } stmts.add( new ReturnStmt(new GetLocalVar(stackIndex(MOD))) ); Stmt block = new Block( stmts.toArray(new Stmt[0]), stackStart, symbolsSize() ); - FnDef fnDef = newFnDef(block); + Class fnDef = newFnDef(block); return fnDef; } @@ -186,9 +189,9 @@ frame = new Frame(frame); addSymbol(ENV); Stmt block = parseBody("define:"+name,spaces,indent); - FnDef fnDef = newFnDef(block); + Class fnDef = newFnDef(block); frame = frame.parent; - Stmt rtn = new SetStmt(fnName,fnDef); + Stmt rtn = new SetStmt(fnName,/*fnDef*/null); return parser.success(rtn); } @@ -329,14 +332,14 @@ frame = new Frame(frame); addSymbol(ENV); Stmt block = parseBody("block:"+name,spaces,false); - FnDef fnDef = newFnDef(block); + Class fnDef = newFnDef(block); frame = frame.parent; // String rtn = "<% env." + tag.name + "(" + (tag.attrs.isEmpty() ? "nil" : table(tag.attrs)) + ",env,function(env) %>" + block + "<% end) %>"; Expr env = env(); Expr fn = new IndexExpr( env, new ConstExpr(name) ); List<Expressions> args = new ArrayList<Expressions>(); args.add( env ); - args.add( fnDef ); + args.add( /*fnDef*/null ); FnCall fnCall = new FnCall( fn, ExpList.build(args) ); Stmt rtn = new ExpressionsStmt(fnCall); return parser.success(rtn);