소스 검색

only allow unary + on constant numbers

Nicolas Cannasse 14 년 전
부모
커밋
5fa8098dfd
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      parser.ml

+ 5 - 1
parser.ml

@@ -557,7 +557,11 @@ and expr = parser
 		| EUnop (Neg,Prefix,(EConst (Int i),pc)),p -> EConst (Int (neg i)),p
 		| EUnop (Neg,Prefix,(EConst (Float j),pc)),p -> EConst (Float (neg j)),p
 		| e -> e)
-	| [< '(Binop OpAdd,p1); e = expr >] -> e
+	| [< '(Binop OpAdd,p1); s >] ->
+		(match s with parser
+		| [< '(Const (Int i),p); e = expr_next (EConst (Int i),p) >] -> e
+		| [< '(Const (Float f),p); e = expr_next (EConst (Float f),p) >] -> e
+		| [< >] -> serror())
 	| [< '(Kwd For,p); '(POpen,_); name = any_ident; '(Kwd In,_); it = expr; '(PClose,_); s >] ->
 		(try
 			let e = expr s in