Pārlūkot izejas kodu

keep binops intact when resuming in parser

Simon Krajewski 11 gadi atpakaļ
vecāks
revīzija
6c460e8540
1 mainītis faili ar 7 papildinājumiem un 2 dzēšanām
  1. 7 2
      parser.ml

+ 7 - 2
parser.ml

@@ -1265,8 +1265,13 @@ and expr_next e1 = parser
 			make_binop OpGte e1 (secure_expr s)
 		| [< e2 = secure_expr >] ->
 			make_binop OpGt e1 e2)
-	| [< '(Binop op,_); e2 = expr >] ->
-		make_binop op e1 e2
+	| [< '(Binop op,_); s >] ->
+		(try
+			(match s with parser
+			| [< e2 = expr >] -> make_binop op e1 e2
+			| [< >] -> serror())
+		with Display e2 ->
+			raise (Display (make_binop op e1 e2)))
 	| [< '(Unop op,p) when is_postfix e1 op; s >] ->
 		expr_next (EUnop (op,Postfix,e1), punion (pos e1) p) s
 	| [< '(Question,_); e2 = expr; '(DblDot,_); e3 = expr >] ->