comparison core/src/luan/impl/LuanParser.java @ 636:13b390bfed32

parser fixes
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 01 Mar 2016 07:29:01 -0700
parents b73f005f3735
children 859c0dedc8b6
comparison
equal deleted inserted replaced
635:c83b8cefd922 636:13b390bfed32
328 328
329 int start = parser.currentIndex(); 329 int start = parser.currentIndex();
330 Var var = nameVar(start,RequiredName(In.NOTHING)); 330 Var var = nameVar(start,RequiredName(In.NOTHING));
331 while( parser.match( '.' ) ) { 331 while( parser.match( '.' ) ) {
332 Spaces(In.NOTHING); 332 Spaces(In.NOTHING);
333 var = indexVar( start, expr(var.expr()), NameExpr(In.NOTHING) ); 333 Expr exp = NameExpr(In.NOTHING);
334 if( exp==null )
335 return parser.failure(null);
336 var = indexVar( start, expr(var.expr()), exp );
334 } 337 }
335 Settable fnName = var.settable(); 338 Settable fnName = var.settable();
336 339
337 FnDef fnDef = RequiredFunction(In.NOTHING); 340 FnDef fnDef = RequiredFunction(In.NOTHING);
338 return parser.success( new SetStmt(fnName,fnDef) ); 341 return parser.success( new SetStmt(fnName,fnDef) );
852 if( parser.match('.') ) { 855 if( parser.match('.') ) {
853 Spaces(in); 856 Spaces(in);
854 exp2 = NameExpr(in); 857 exp2 = NameExpr(in);
855 if( exp2!=null ) 858 if( exp2!=null )
856 return parser.success(indexVar(start,expr(exp1),exp2)); 859 return parser.success(indexVar(start,expr(exp1),exp2));
860 return parser.failure(null);
857 } 861 }
858 FnCall fnCall = Args( in, start, expr(exp1), new ArrayList<Expressions>() ); 862 FnCall fnCall = Args( in, start, expr(exp1), new ArrayList<Expressions>() );
859 if( fnCall != null ) 863 if( fnCall != null )
860 return parser.success(exprVar(fnCall)); 864 return parser.success(exprVar(fnCall));
861 return parser.failure(null); 865 return parser.failure(null);