Mercurial Hosting > luan
comparison core/src/luan/impl/ThemeParser.java @ 670:58ebfec6178b
all luan now compiles
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 12 Apr 2016 01:05:57 -0600 |
parents | 08966099aa6d |
children |
comparison
equal
deleted
inserted
replaced
669:e320488819b6 | 670:58ebfec6178b |
---|---|
25 throw new LuanException( e.getFancyMessage() ); | 25 throw new LuanException( e.getFancyMessage() ); |
26 } | 26 } |
27 */ | 27 */ |
28 return null; | 28 return null; |
29 } | 29 } |
30 | 30 /* |
31 private static final class Frame { | 31 private static final class Frame { |
32 final Frame parent; | 32 final Frame parent; |
33 final List<String> symbols = new ArrayList<String>(); | 33 final List<String> symbols = new ArrayList<String>(); |
34 int stackSize = 0; | 34 int stackSize = 0; |
35 final boolean isVarArg; | 35 final boolean isVarArg; |
108 if( frame.stackSize < symbolsSize() ) | 108 if( frame.stackSize < symbolsSize() ) |
109 frame.stackSize = symbolsSize(); | 109 frame.stackSize = symbolsSize(); |
110 } | 110 } |
111 | 111 |
112 private Class newFnDef(Stmt stmt) { | 112 private Class newFnDef(Stmt stmt) { |
113 // return new FnDef( /*stmt*/null, frame.stackSize, symbolsSize(), frame.isVarArg, frame.upValueGetters.toArray(NO_UP_VALUE_GETTERS) ); | 113 // return new FnDef( stmt, frame.stackSize, symbolsSize(), frame.isVarArg, frame.upValueGetters.toArray(NO_UP_VALUE_GETTERS) ); |
114 return null; | 114 return null; |
115 } | 115 } |
116 | 116 |
117 private int stackIndex(String name) { | 117 private int stackIndex(String name) { |
118 return frame.stackIndex(name); | 118 return frame.stackIndex(name); |
189 frame = new Frame(frame); | 189 frame = new Frame(frame); |
190 addSymbol(ENV); | 190 addSymbol(ENV); |
191 Stmt block = parseBody("define:"+name,spaces,indent); | 191 Stmt block = parseBody("define:"+name,spaces,indent); |
192 Class fnDef = newFnDef(block); | 192 Class fnDef = newFnDef(block); |
193 frame = frame.parent; | 193 frame = frame.parent; |
194 Stmt rtn = new SetStmt(fnName,/*fnDef*/null); | 194 Stmt rtn = new SetStmt(fnName,fnDef); |
195 return parser.success(rtn); | 195 return parser.success(rtn); |
196 } | 196 } |
197 | 197 |
198 private Stmt parseBody(String tagName,final String spaces,boolean afterIndent) throws ParseException { | 198 private Stmt parseBody(String tagName,final String spaces,boolean afterIndent) throws ParseException { |
199 List<Stmt> stmts = new ArrayList<Stmt>(); | 199 List<Stmt> stmts = new ArrayList<Stmt>(); |
271 private boolean matchEndTag(String tagName) { | 271 private boolean matchEndTag(String tagName) { |
272 parser.begin(); | 272 parser.begin(); |
273 /* | 273 /* |
274 if( tagName.startsWith("define:") ) | 274 if( tagName.startsWith("define:") ) |
275 EndOfLine(); | 275 EndOfLine(); |
276 */ | 276 * / |
277 if( EndOfLine() ) | 277 if( EndOfLine() ) |
278 InlineSpaces(); | 278 InlineSpaces(); |
279 return parser.match("{/") && parser.match(tagName) && parser.match('}') ? parser.success() : parser.failure(); | 279 return parser.match("{/") && parser.match(tagName) && parser.match('}') ? parser.success() : parser.failure(); |
280 } | 280 } |
281 | 281 |
337 // String rtn = "<% env." + tag.name + "(" + (tag.attrs.isEmpty() ? "nil" : table(tag.attrs)) + ",env,function(env) %>" + block + "<% end) %>"; | 337 // String rtn = "<% env." + tag.name + "(" + (tag.attrs.isEmpty() ? "nil" : table(tag.attrs)) + ",env,function(env) %>" + block + "<% end) %>"; |
338 Expr env = env(); | 338 Expr env = env(); |
339 Expr fn = new IndexExpr( env, new ConstExpr(name) ); | 339 Expr fn = new IndexExpr( env, new ConstExpr(name) ); |
340 List<Expressions> args = new ArrayList<Expressions>(); | 340 List<Expressions> args = new ArrayList<Expressions>(); |
341 args.add( env ); | 341 args.add( env ); |
342 args.add( /*fnDef*/null ); | 342 args.add( fnDef ); |
343 FnCall fnCall = new FnCall( fn, ExpList.build(args) ); | 343 FnCall fnCall = new FnCall( fn, ExpList.build(args) ); |
344 Stmt rtn = new ExpressionsStmt(fnCall); | 344 Stmt rtn = new ExpressionsStmt(fnCall); |
345 return parser.success(rtn); | 345 return parser.success(rtn); |
346 } | 346 } |
347 | 347 |
408 | 408 |
409 private boolean NameChar() { | 409 private boolean NameChar() { |
410 return parser.inCharRange('a', 'z') || parser.inCharRange('A', 'Z') | 410 return parser.inCharRange('a', 'z') || parser.inCharRange('A', 'Z') |
411 || parser.inCharRange('0', '9') || parser.anyOf("-_."); | 411 || parser.inCharRange('0', '9') || parser.anyOf("-_."); |
412 } | 412 } |
413 | 413 */ |
414 } | 414 } |