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);