Mercurial Hosting > luan
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); |