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 }