diff src/luan/interp/LuanParser.java @ 154:c2e5101682ae

Expr extends Expressions git-svn-id: https://luan-java.googlecode.com/svn/trunk@155 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 17 Jun 2014 09:55:43 +0000
parents fa03671f59a0
children db7b3902e01c
line wrap: on
line diff
--- a/src/luan/interp/LuanParser.java	Tue Jun 17 02:57:14 2014 +0000
+++ b/src/luan/interp/LuanParser.java	Tue Jun 17 09:55:43 2014 +0000
@@ -170,10 +170,10 @@
 		return t;
 	}
 
-	private static Expr expr(Code code) {
-		if( code instanceof Expressions )
-			return new ExpressionsExpr((Expressions)code);
-		return (Expr)code;
+	private static Expr expr(Expressions exprs) {
+		if( exprs instanceof Expr )
+			return (Expr)exprs; 
+		return new ExpressionsExpr(exprs);
 	}
 
 	private FnDef newFnDef(int start,Stmt stmt) {
@@ -263,7 +263,7 @@
 			return parser.failure(null);
 		EndOfLine();
 		In inJsp = in.jsp();
-		ExpList.Builder builder = new ExpList.Builder();
+		List<Expressions> builder = new ArrayList<Expressions>();
 		while(true) {
 			if( parser.match( "<%=" ) ) {
 				Spaces(inJsp);
@@ -271,7 +271,7 @@
 				RequiredMatch( "%>" );
 			} else if( parser.match( "<%" ) ) {
 				Spaces(inJsp);
-				return parser.success(builder.build());
+				return parser.success(ExpList.build(builder));
 			} else {
 				int i = parser.currentIndex();
 				do {
@@ -333,7 +333,7 @@
 			return parser.failure(null);
 		String varName = modName.substring(modName.lastIndexOf('.')+1);
 		LuanSource.Element se = se(start);
-		FnCall require = new FnCall( se, importExpr, new ExpList.SingleExpList(new ConstExpr(modName)) );
+		FnCall require = new FnCall( se, importExpr, new ConstExpr(modName) );
 		Settable settable;
 		if( interactive ) {
 			settable = new SetTableEntry( se(start), env(), new ConstExpr(varName) );
@@ -540,25 +540,25 @@
 		return var.settable();
 	}
 
-	private Code RequiredExpr(In in) throws ParseException {
+	private Expressions RequiredExpr(In in) throws ParseException {
 		parser.begin();
 		return parser.success(required(Expr(in),"Bad expression"));
 	}
 
-	private Code Expr(In in) throws ParseException {
+	private Expressions Expr(In in) throws ParseException {
 		parser.begin();
-		Code exp;
+		Expressions exp;
 		return (exp = VarArgs(in)) != null
 			|| (exp = JspExpressions(in)) != null
 			|| (exp = OrExpr(in)) != null
 			? parser.success(exp)
-			: parser.failure((Code)null)
+			: parser.failure((Expressions)null)
 		;
 	}
 
-	private Code OrExpr(In in) throws ParseException {
+	private Expressions OrExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = AndExpr(in);
+		Expressions exp = AndExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		while( Keyword("or",in) ) {
@@ -567,9 +567,9 @@
 		return parser.success(exp);
 	}
 
-	private Code AndExpr(In in) throws ParseException {
+	private Expressions AndExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = RelExpr(in);
+		Expressions exp = RelExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		while( Keyword("and",in) ) {
@@ -578,9 +578,9 @@
 		return parser.success(exp);
 	}
 
-	private Code RelExpr(In in) throws ParseException {
+	private Expressions RelExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = ConcatExpr(in);
+		Expressions exp = ConcatExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		while(true) {
@@ -608,9 +608,9 @@
 		return parser.success(exp);
 	}
 
-	private Code ConcatExpr(In in) throws ParseException {
+	private Expressions ConcatExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = SumExpr(in);
+		Expressions exp = SumExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		if( parser.match("..") ) {
@@ -620,9 +620,9 @@
 		return parser.success(exp);
 	}
 
-	private Code SumExpr(In in) throws ParseException {
+	private Expressions SumExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = TermExpr(in);
+		Expressions exp = TermExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		while(true) {
@@ -643,9 +643,9 @@
 		return parser.match('-') && !parser.match('-') ? parser.success() : parser.failure();
 	}
 
-	private Code TermExpr(In in) throws ParseException {
+	private Expressions TermExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = UnaryExpr(in);
+		Expressions exp = UnaryExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		while(true) {
@@ -669,7 +669,7 @@
 		return parser.match('%') && !parser.match('>') ? parser.success() : parser.failure();
 	}
 
-	private Code UnaryExpr(In in) throws ParseException {
+	private Expressions UnaryExpr(In in) throws ParseException {
 		int start = parser.begin();
 		if( parser.match('#') ) {
 			Spaces(in);
@@ -683,15 +683,15 @@
 			Spaces(in);
 			return parser.success( new NotExpr( se(start), required(expr(UnaryExpr(in))) ) );
 		}
-		Code exp = PowExpr(in);
+		Expressions exp = PowExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		return parser.success(exp);
 	}
 
-	private Code PowExpr(In in) throws ParseException {
+	private Expressions PowExpr(In in) throws ParseException {
 		int start = parser.begin();
-		Code exp = SingleExpr(in);
+		Expressions exp = SingleExpr(in);
 		if( exp==null )
 			return parser.failure(null);
 		if( parser.match('^') ) {
@@ -701,9 +701,9 @@
 		return parser.success(exp);
 	}
 
-	private Code SingleExpr(In in) throws ParseException {
+	private Expressions SingleExpr(In in) throws ParseException {
 		parser.begin();
-		Code exp;
+		Expressions exp;
 		exp = FunctionExpr(in);
 		if( exp != null )
 			return parser.success(exp);
@@ -768,12 +768,12 @@
 		In inParens = in.parens();
 		Spaces(inParens);
 		List<TableExpr.Field> fields = new ArrayList<TableExpr.Field>();
-		ExpList.Builder builder = new ExpList.Builder();
+		List<Expressions> builder = new ArrayList<Expressions>();
 		while( Field(fields,builder,in) && FieldSep(inParens) );
 		Spaces(inParens);
 		if( !parser.match('}') )
 			throw parser.exception("Expected table element or '}'");
-		return parser.success( new TableExpr( se(start), fields.toArray(new TableExpr.Field[0]), builder.build() ) );
+		return parser.success( new TableExpr( se(start), fields.toArray(new TableExpr.Field[0]), ExpList.build(builder) ) );
 	}
 
 	private boolean FieldSep(In in) throws ParseException {
@@ -783,7 +783,7 @@
 		return true;
 	}
 
-	private boolean Field(List<TableExpr.Field> fields,ExpList.Builder builder,In in) throws ParseException {
+	private boolean Field(List<TableExpr.Field> fields,List<Expressions> builder,In in) throws ParseException {
 		parser.begin();
 		Expr exp = SubExpr(in);
 		if( exp==null )
@@ -794,15 +794,15 @@
 			return parser.success();
 		}
 		parser.rollback();
-		Code code = Expr(in);
-		if( code != null ) {
-			builder.add(code);
+		Expressions exprs = Expr(in);
+		if( exprs != null ) {
+			builder.add(exprs);
 			return parser.success();
 		}
 		return parser.failure();
 	}
 
-	private Code VarExp(In in) throws ParseException {
+	private Expressions VarExp(In in) throws ParseException {
 		Var var = VarZ(in);
 		return var==null ? null : var.expr();
 	}
@@ -819,25 +819,25 @@
 		return parser.success(var);
 	}
 
-	private Var Var2(In in,int start,Code exp1) throws ParseException {
+	private Var Var2(In in,int start,Expressions exp1) throws ParseException {
 		Var var = VarExt(in,start,exp1);
 		if( var != null )
 			return var;
 		if( parser.match("->") ) {
 			Spaces(in);
-			ExpList.Builder builder = new ExpList.Builder();
+			List<Expressions> builder = new ArrayList<Expressions>();
 			builder.add(exp1);
 			Expr exp2 = expr(RequiredVarExpB(in));
 			FnCall fnCall = required(Args( in, start, exp2, builder ));
 			return exprVar(fnCall);
 		}
-		FnCall fnCall = Args( in, start, expr(exp1), new ExpList.Builder() );
+		FnCall fnCall = Args( in, start, expr(exp1), new ArrayList<Expressions>() );
 		if( fnCall != null )
 			return exprVar(fnCall);
 		return null;
 	}
 
-	private Code RequiredVarExpB(In in) throws ParseException {
+	private Expressions RequiredVarExpB(In in) throws ParseException {
 		int start = parser.begin();
 		Var var = required(VarStart(in));
 		Var var2;
@@ -847,7 +847,7 @@
 		return parser.success(var.expr());
 	}
 
-	private Var VarExt(In in,int start,Code exp1) throws ParseException {
+	private Var VarExt(In in,int start,Expressions exp1) throws ParseException {
 		parser.begin();
 		Expr exp2 = SubExpr(in);
 		if( exp2 != null )
@@ -888,7 +888,7 @@
 	}
 
 	private interface Var {
-		public Code expr();
+		public Expressions expr();
 		public Settable settable();
 	}
 
@@ -917,10 +917,10 @@
 		};
 	}
 
-	private Var exprVar(final Code expr) {
+	private Var exprVar(final Expressions expr) {
 		return new Var() {
 
-			public Code expr() {
+			public Expressions expr() {
 				return expr;
 			}
 
@@ -943,14 +943,14 @@
 		};
 	}
 
-	private FnCall Args(In in,int start,Expr fn,ExpList.Builder builder) throws ParseException {
+	private FnCall Args(In in,int start,Expr fn,List<Expressions> builder) throws ParseException {
 		parser.begin();
 		return args(in,builder)
-			? parser.success( new FnCall( se(start), fn, builder.build() ) )
+			? parser.success( new FnCall( se(start), fn, ExpList.build(builder) ) )
 			: parser.failure((FnCall)null);
 	}
 
-	private boolean args(In in,ExpList.Builder builder) throws ParseException {
+	private boolean args(In in,List<Expressions> builder) throws ParseException {
 		if( parser.match('(') ) {
 			In inParens = in.parens();
 			Spaces(inParens);
@@ -979,13 +979,13 @@
 	}
 
 	private Expressions ExpList(In in) throws ParseException {
-		ExpList.Builder builder = new ExpList.Builder();
-		return ExpList(in,builder) ? builder.build() : null;
+		List<Expressions> builder = new ArrayList<Expressions>();
+		return ExpList(in,builder) ? ExpList.build(builder) : null;
 	}
 
-	private boolean ExpList(In in,ExpList.Builder builder) throws ParseException {
+	private boolean ExpList(In in,List<Expressions> builder) throws ParseException {
 		parser.begin();
-		Code exp = Expr(in);
+		Expressions exp = Expr(in);
 		if( exp==null )
 			return parser.failure();
 		builder.add(exp);