Mercurial Hosting > luan
diff core/src/luan/impl/LuanParser.java @ 604:b73f005f3735 0.13
table constructor now uses end_of_line as a delimiter
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 24 Nov 2015 16:29:27 -0700 |
parents | 0742ac78fa69 |
children | 13b390bfed32 |
line wrap: on
line diff
--- a/core/src/luan/impl/LuanParser.java Tue Nov 10 06:20:08 2015 -0700 +++ b/core/src/luan/impl/LuanParser.java Tue Nov 24 16:29:27 2015 -0700 @@ -765,12 +765,15 @@ int start = parser.begin(); if( !parser.match('{') ) return parser.failure(null); - In inParens = in.parens(); - Spaces(inParens); + Spaces(In.NOTHING); List<TableExpr.Field> fields = new ArrayList<TableExpr.Field>(); List<Expressions> builder = new ArrayList<Expressions>(); - while( Field(fields,builder,inParens) && FieldSep(inParens) ); - Expressions exp = TemplateExpressions(inParens); + Field(fields,builder); + while( FieldSep() ) { + Spaces(In.NOTHING); + Field(fields,builder); + } + Expressions exp = TemplateExpressions(In.NOTHING); if( exp != null ) builder.add(exp); if( !parser.match('}') ) @@ -779,25 +782,22 @@ return parser.success( new TableExpr( se(start), fields.toArray(new TableExpr.Field[0]), ExpList.build(builder) ) ); } - private boolean FieldSep(In in) throws ParseException { - if( !parser.anyOf(",;") ) - return false; - Spaces(in); - return true; + private boolean FieldSep() throws ParseException { + return parser.anyOf(",;") || EndOfLine(); } - private boolean Field(List<TableExpr.Field> fields,List<Expressions> builder,In in) throws ParseException { + private boolean Field(List<TableExpr.Field> fields,List<Expressions> builder) throws ParseException { parser.begin(); - Expr exp = SubExpr(in); + Expr exp = SubExpr(In.NOTHING); if( exp==null ) - exp = NameExpr(in); + exp = NameExpr(In.NOTHING); if( exp!=null && parser.match('=') ) { - Spaces(in); - fields.add( new TableExpr.Field( exp, required(expr(ExprZ(in))) ) ); + Spaces(In.NOTHING); + fields.add( new TableExpr.Field( exp, required(expr(ExprZ(In.NOTHING))) ) ); return parser.success(); } parser.rollback(); - Expressions exprs = ExprZ(in); + Expressions exprs = ExprZ(In.NOTHING); if( exprs != null ) { builder.add(exprs); return parser.success(); @@ -1009,9 +1009,8 @@ parser.begin(); if( !parser.match('[') || parser.test("[") || parser.test("=") ) return parser.failure(null); - In inParens = in.parens(); - Spaces(inParens); - Expr exp = expr(RequiredExpr(inParens)); + Spaces(In.NOTHING); + Expr exp = expr(RequiredExpr(In.NOTHING)); RequiredMatch(']'); Spaces(in); return parser.success(exp);