Mercurial Hosting > luan
comparison core/src/luan/impl/LuanParser.java @ 206:77365c9fdfe4
remove -> operator
git-svn-id: https://luan-java.googlecode.com/svn/trunk@207 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Mon, 07 Jul 2014 23:55:52 +0000 |
parents | 99eef1d0e706 |
children | 239c8d650028 |
comparison
equal
deleted
inserted
replaced
205:3918f92de5fe | 206:77365c9fdfe4 |
---|---|
871 return var==null ? null : var.expr(); | 871 return var==null ? null : var.expr(); |
872 } | 872 } |
873 | 873 |
874 private Var VarZ(In in) throws ParseException { | 874 private Var VarZ(In in) throws ParseException { |
875 int start = parser.begin(); | 875 int start = parser.begin(); |
876 Var var = VarStart(in); | 876 Var var = VarStart(in,start); |
877 if( var==null ) | 877 if( var==null ) |
878 return parser.failure(null); | 878 return parser.failure(null); |
879 Var var2; | 879 Var var2; |
880 while( (var2=Var2(in,start,var.expr())) != null ) { | 880 while( (var2=Var2(in,start,var.expr())) != null ) { |
881 var = var2; | 881 var = var2; |
882 } | 882 } |
883 return parser.success(var); | 883 return parser.success(var); |
884 } | 884 } |
885 | 885 |
886 private Var VarStart(In in,int start) throws ParseException { | |
887 if( parser.match('(') ) { | |
888 In inParens = in.parens(); | |
889 Spaces(inParens); | |
890 Expr exp = expr(RequiredExpr(inParens)); | |
891 RequiredMatch(')'); | |
892 Spaces(in); | |
893 return exprVar(exp); | |
894 } | |
895 String name = Name(in); | |
896 if( name != null ) | |
897 return nameVar(start,name); | |
898 Expressions exp; | |
899 exp = TableExpr(in); | |
900 if( exp != null ) | |
901 return exprVar(exp); | |
902 exp = Literal(in); | |
903 if( exp != null ) | |
904 return exprVar(exp); | |
905 return null; | |
906 } | |
907 | |
886 private Var Var2(In in,int start,Expressions exp1) throws ParseException { | 908 private Var Var2(In in,int start,Expressions exp1) throws ParseException { |
887 parser.begin(); | |
888 Var var = VarExt(in,start,exp1); | |
889 if( var != null ) | |
890 return parser.success(var); | |
891 if( parser.match("->") ) { | |
892 Spaces(in); | |
893 List<Expressions> builder = new ArrayList<Expressions>(); | |
894 builder.add(exp1); | |
895 Expr exp2 = expr(RequiredVarExpB(in)); | |
896 FnCall fnCall = required(Args( in, start, exp2, builder )); | |
897 return parser.success(exprVar(fnCall)); | |
898 } | |
899 FnCall fnCall = Args( in, start, expr(exp1), new ArrayList<Expressions>() ); | |
900 if( fnCall != null ) | |
901 return parser.success(exprVar(fnCall)); | |
902 return parser.failure(null); | |
903 } | |
904 | |
905 private Expressions RequiredVarExpB(In in) throws ParseException { | |
906 int start = parser.begin(); | |
907 Var var = required(VarStart(in)); | |
908 Var var2; | |
909 while( (var2=VarExt(in,start,var.expr())) != null ) { | |
910 var = var2; | |
911 } | |
912 return parser.success(var.expr()); | |
913 } | |
914 | |
915 private Var VarExt(In in,int start,Expressions exp1) throws ParseException { | |
916 parser.begin(); | 909 parser.begin(); |
917 Expr exp2 = SubExpr(in); | 910 Expr exp2 = SubExpr(in); |
918 if( exp2 != null ) | 911 if( exp2 != null ) |
919 return parser.success(indexVar(start,expr(exp1),exp2)); | 912 return parser.success(indexVar(start,expr(exp1),exp2)); |
920 if( parser.match('.') ) { | 913 if( parser.match('.') ) { |
921 Spaces(in); | 914 Spaces(in); |
922 exp2 = NameExpr(in); | 915 exp2 = NameExpr(in); |
923 if( exp2!=null ) | 916 if( exp2!=null ) |
924 return parser.success(indexVar(start,expr(exp1),exp2)); | 917 return parser.success(indexVar(start,expr(exp1),exp2)); |
925 } | 918 } |
926 return parser.failure(null); | 919 FnCall fnCall = Args( in, start, expr(exp1), new ArrayList<Expressions>() ); |
927 } | 920 if( fnCall != null ) |
928 | 921 return parser.success(exprVar(fnCall)); |
929 private Var VarStart(In in) throws ParseException { | |
930 int start = parser.begin(); | |
931 if( parser.match('(') ) { | |
932 In inParens = in.parens(); | |
933 Spaces(inParens); | |
934 Expr exp = expr(RequiredExpr(inParens)); | |
935 RequiredMatch(')'); | |
936 Spaces(in); | |
937 return parser.success(exprVar(exp)); | |
938 } | |
939 String name = Name(in); | |
940 if( name != null ) | |
941 return parser.success(nameVar(start,name)); | |
942 Expressions exp; | |
943 exp = TableExpr(in); | |
944 if( exp != null ) | |
945 return parser.success(exprVar(exp)); | |
946 exp = Literal(in); | |
947 if( exp != null ) | |
948 return parser.success(exprVar(exp)); | |
949 return parser.failure(null); | 922 return parser.failure(null); |
950 } | 923 } |
951 | 924 |
952 private Expr env() { | 925 private Expr env() { |
953 int index = stackIndex(_ENV); | 926 int index = stackIndex(_ENV); |