@@ -283,7 +283,7 @@ rule reference_paren_content input start depth_paren depth_curly buffer = parse
283
283
| '('
284
284
{
285
285
buffer_add_lexeme buffer lexbuf ;
286
- reference_paren_content input start (depth_paren + 1 ) depth_curly buffer
286
+ reference_paren_content input start (depth_paren + 1 ) depth_curly buffer
287
287
lexbuf }
288
288
| '{'
289
289
{
@@ -293,33 +293,28 @@ rule reference_paren_content input start depth_paren depth_curly buffer = parse
293
293
| ')'
294
294
{
295
295
buffer_add_lexeme buffer lexbuf ;
296
- if depth_paren = 0 then ()
296
+ if depth_paren = 0 then false
297
297
else
298
298
( reference_paren_content input start (depth_paren - 1 ) depth_curly
299
299
buffer lexbuf ) }
300
300
| '}'
301
301
{
302
302
buffer_add_lexeme buffer lexbuf ;
303
- if depth_curly = 0 then
303
+ if depth_curly = 0 then (
304
304
warning
305
305
input
306
306
~start_offset: (Lexing. lexeme_end lexbuf)
307
307
(Parse_error. not_allowed
308
308
~what: " '}' (end of reference)"
309
309
~in_what: (
310
310
Printf. sprintf " '%s' (custom operator)"
311
- (Buffer. sub buffer 0 ((Buffer. length buffer) - 1 ))))
311
+ (Buffer. sub buffer 0 ((Buffer. length buffer) - 1 )))) ;
312
+ true )
312
313
else
313
314
( reference_paren_content input start depth_paren (depth_curly - 1 )
314
315
buffer lexbuf ) }
315
316
| eof
316
- { warning
317
- input
318
- ~start_offset: (Lexing. lexeme_end lexbuf)
319
- (Parse_error. not_allowed
320
- ~what: (Token. describe `End )
321
- ~in_what: (Token. describe (reference_token start " " )))
322
- }
317
+ { false }
323
318
| _
324
319
{
325
320
buffer_add_lexeme buffer lexbuf ;
@@ -333,8 +328,11 @@ and reference_content input start buffer = parse
333
328
| '('
334
329
{
335
330
buffer_add_lexeme buffer lexbuf ;
336
- ((reference_paren_content input start 0 0 buffer lexbuf)) ;
337
- reference_content input start buffer lexbuf
331
+ let ref_closed = reference_paren_content input start 0 0 buffer lexbuf in
332
+ if ref_closed then
333
+ Buffer. contents buffer
334
+ else
335
+ reference_content input start buffer lexbuf
338
336
}
339
337
| '"' [^ '"' ]* '"'
340
338
{
0 commit comments