changeset 2000:591d396bccad

fix parse error
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 14 Jul 2025 00:47:19 -0600
parents dd9696f18b62
children 610c5d10d9c1
files src/luan/impl/LuanParser.java src/luan/impl/Parser.java
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/impl/LuanParser.java	Sat Jul 12 23:54:22 2025 -0600
+++ b/src/luan/impl/LuanParser.java	Mon Jul 14 00:47:19 2025 -0600
@@ -1303,7 +1303,8 @@
 			Spaces();
 			Expr exp = RequiredExpr().single();
 			RequiredMatch(')');
-			Spaces();
+			Spaces();
+			exp.addNewLines();
 			return exprVar(exp);
 		}
 		String name = Name();
@@ -1495,7 +1496,8 @@
 		Spaces();
 		Expr exp = RequiredExpr().single();
 		RequiredMatch(']');
-		Spaces();
+		Spaces();
+		exp.addNewLines();
 		return parser.success(exp);
 	}
 
--- a/src/luan/impl/Parser.java	Sat Jul 12 23:54:22 2025 -0600
+++ b/src/luan/impl/Parser.java	Mon Jul 14 00:47:19 2025 -0600
@@ -4,8 +4,8 @@
 final class Parser {
 
 	private static class Frame {
-		int i;
-		StringBuilder sb;
+		int i = 0;
+		StringBuilder sb = null;
 	}
 
 //	private final LuanSource src;
@@ -61,7 +61,8 @@
 
 	public boolean success() {
 		Frame f = stack[frame];
-		if( f.sb != null && f.sb.length() > 0 )  throw new RuntimeException("sb not emtpy");
+		if( f.sb != null && f.sb.length() > 0 )
+			throw new RuntimeException("sb not empty, contains '"+f.sb+"' and text is '"+text.substring(stack[frame-1].i,stack[frame].i)+"'");
 		frame--;
 		stack[frame].i = f.i;
 		return true;