Mercurial Hosting > luan
changeset 1681:6061be2cd84b
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 03 Jun 2022 09:17:21 -0600 |
parents | 9ef19f5ea973 |
children | 97cc73664ca8 |
files | src/luan/impl/LuanParser.java |
diffstat | 1 files changed, 17 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
diff -r 9ef19f5ea973 -r 6061be2cd84b src/luan/impl/LuanParser.java --- a/src/luan/impl/LuanParser.java Thu Jun 02 22:34:55 2022 -0600 +++ b/src/luan/impl/LuanParser.java Fri Jun 03 09:17:21 2022 -0600 @@ -1012,6 +1012,19 @@ return parser.match('-') && !parser.match('-') ? parser.success() : parser.failure(); } + private Expr TermExpr(Expr exp,String op) throws ParseException { + Spaces(); + exp = exp.single(); + Expr exp2 = required(UnaryExpr()).single(); + Expr newExp = new Expr(Val.SINGLE,false); + newExp.add( "LuanImpl." + op + "(luan," ); + newExp.addAll( exp ); + newExp.add( "," ); + newExp.addAll( exp2 ); + newExp.add( ")" ); + return newExp; + } + private Expr TermExpr() throws ParseException { parser.begin(); Expr exp = UnaryExpr(); @@ -1019,51 +1032,15 @@ return parser.failure(null); while(true) { if( parser.match('*') ) { - Spaces(); - exp = exp.single(); - Expr exp2 = required(UnaryExpr()).single(); - Expr newExp = new Expr(Val.SINGLE,false); - newExp.add( "LuanImpl.mul(luan," ); - newExp.addAll( exp ); - newExp.add( "," ); - newExp.addAll( exp2 ); - newExp.add( ")" ); - exp = newExp; + exp = TermExpr(exp,"mul"); } else if( parser.match('/') ) { if( parser.match('/') ) { - Spaces(); - exp = exp.single(); - Expr exp2 = required(UnaryExpr()).single(); - Expr newExp = new Expr(Val.SINGLE,false); - newExp.add( "LuanImpl.idiv(luan," ); - newExp.addAll( exp ); - newExp.add( "," ); - newExp.addAll( exp2 ); - newExp.add( ")" ); - exp = newExp; + exp = TermExpr(exp,"idiv"); } else { - Spaces(); - exp = exp.single(); - Expr exp2 = required(UnaryExpr()).single(); - Expr newExp = new Expr(Val.SINGLE,false); - newExp.add( "LuanImpl.div(luan," ); - newExp.addAll( exp ); - newExp.add( "," ); - newExp.addAll( exp2 ); - newExp.add( ")" ); - exp = newExp; + exp = TermExpr(exp,"div"); } } else if( Mod() ) { - Spaces(); - exp = exp.single(); - Expr exp2 = required(UnaryExpr()).single(); - Expr newExp = new Expr(Val.SINGLE,false); - newExp.add( "LuanImpl.mod(luan," ); - newExp.addAll( exp ); - newExp.add( "," ); - newExp.addAll( exp2 ); - newExp.add( ")" ); - exp = newExp; + exp = TermExpr(exp,"mod"); } else break; }