Mercurial Hosting > luan
comparison core/src/luan/impl/LuanParser.java @ 369:85bf9f0379aa
template statements no longer depend on 'Io' being defined
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 17 Apr 2015 06:25:38 -0600 |
parents | 5e34702423a0 |
children | e89bf64a0d05 |
comparison
equal
deleted
inserted
replaced
368:2af805677fc4 | 369:85bf9f0379aa |
---|---|
263 } | 263 } |
264 } | 264 } |
265 | 265 |
266 private Stmt TemplateStmt() throws ParseException { | 266 private Stmt TemplateStmt() throws ParseException { |
267 int start = parser.currentIndex(); | 267 int start = parser.currentIndex(); |
268 Expressions exp = TemplateExpressions(In.NOTHING); | 268 Expressions exprs = TemplateExpressions(In.NOTHING); |
269 if( exp == null ) | 269 if( exprs == null ) |
270 return null; | 270 return null; |
271 Expr fnExp = (Expr)nameVar(start,"Io").expr(); | 271 LuanSource.Element se = se(start,"require 'luan:Io'"); |
272 LuanSource.Element se = se(start,"stdout"); | 272 FnCall requireCall = new FnCall( se, new ConstExpr(se,PackageLuan.requireFn), new ConstExpr(se,"luan:Io") ); |
273 fnExp = new IndexExpr( se, fnExp, new ConstExpr(se,"stdout") ); | 273 se = se(start,"stdout"); |
274 Expr stdoutExp = new IndexExpr( se, expr(requireCall), new ConstExpr(se,"stdout") ); | |
274 se = se(start,"write"); | 275 se = se(start,"write"); |
275 fnExp = new IndexExpr( se, fnExp, new ConstExpr(se,"write") ); | 276 Expr writeExp = new IndexExpr( se, stdoutExp, new ConstExpr(se,"write") ); |
276 FnCall fnCall = new FnCall( se(start), fnExp, exp ); | 277 FnCall writeCall = new FnCall( se(start), writeExp, exprs ); |
277 return new ExpressionsStmt(fnCall); | 278 return new ExpressionsStmt(writeCall); |
278 } | 279 } |
279 | 280 |
280 private Expressions TemplateExpressions(In in) throws ParseException { | 281 private Expressions TemplateExpressions(In in) throws ParseException { |
281 if( in.template ) | 282 if( in.template ) |
282 return null; | 283 return null; |