5.16.9. Grammar Expressions

Start data section to src/flx_parse.mly[34 /35 ] Next Prev First Last
  2572: glr_term:
  2573:   | qualified_name { `GLR_name (qualified_name_of_expr $1) }
  2574:   /* | LSQB glr_alts RSQB { `GLR_opt $1 }  */
  2575:   | LBRACE glr_alternatives RBRACE { `GLR_ast $2 }
  2576:   | LPAR glr_alternatives RPAR { $2 }
  2577:   | glr_term QUEST { `GLR_opt $1 }
  2578:   | glr_term STAR { `GLR_ast $1 }
  2579:   | glr_term PLUS  { `GLR_plus $1 }
  2580: 
  2581: glr_alternatives:
  2582:   | glr_sequence VBAR glr_alts { `GLR_alt ( $1::$3) }
  2583:   | glr_sequence { $1 }
  2584: 
  2585: glr_alts:
  2586:   | glr_sequence VBAR glr_alts { $1 :: $3 }
  2587:   | glr_sequence { [$1] }
  2588: 
  2589: glr_sequence:
  2590:   | glr_term glr_seqs { `GLR_seq ($1::$2) }
  2591:   | glr_term { $1 }
  2592: 
  2593: glr_seqs:
  2594:   | glr_term glr_seqs { $1 :: $2 }
  2595:   | glr_term { [$1] }
  2596: 
  2597: glr_entry:
  2598:   | NAME COLON glr_term { Some (snd $1), $3 }
  2599:   | glr_term { None, $1 }
  2600: 
  2601: glr_entries:
  2602:   | glr_entry glr_entries { $1 :: $2 }
  2603:   | glr_entry { [$1] }
  2604: 
  2605: glr_matching:
  2606:   | VBAR glr_entries EQRIGHTARROW expr { rstoken $1 $3, $2 , $4 }
  2607:   | VBAR EQRIGHTARROW expr { rstoken $1 $2, [] , $3 }
  2608: 
  2609: glr_matchings:
  2610:   | glr_matching glr_matchings { $1 :: $2 }
  2611:   | glr_matching { [$1] }
  2612: 
  2613: glr_production:
  2614:   | NONTERM NAME COLON expr EQUAL glr_matchings SEMI
  2615:   {
  2616:     let sr = rstoken $1 $7 in
  2617:     let t = typecode_of_expr $4 in
  2618:     `AST_glr (sr,snd $2, t, $6)
  2619:   }
  2620: 
  2621: glr_parse:
  2622:   | PARSE expr WITH glr_matchings ENDMATCH
  2623:   {
  2624:     let sr = rstoken $1 $5 in
  2625:     `AST_parse (sr,$2,$4)
  2626:   }
  2627: 
End data section to src/flx_parse.mly[34]