5.16.7. Grammar Expressions

Start data section to src/flx_parse.mly[32 /33 ] Next Prev First Last
  2269: glr_term:
  2270:   | qualified_name { `GLR_name (qualified_name_of_expr $1) }
  2271:   /* | LSQB glr_alts RSQB { `GLR_opt $1 }  */
  2272:   | LBRACE glr_alternatives RBRACE { `GLR_ast $2 }
  2273:   | LPAR glr_alternatives RPAR { $2 }
  2274:   | glr_term QUEST { `GLR_opt $1 }
  2275:   | glr_term STAR { `GLR_ast $1 }
  2276:   | glr_term PLUS  { `GLR_plus $1 }
  2277: 
  2278: glr_alternatives:
  2279:   | glr_sequence VBAR glr_alts { `GLR_alt ( $1::$3) }
  2280:   | glr_sequence { $1 }
  2281: 
  2282: glr_alts:
  2283:   | glr_sequence VBAR glr_alts { $1 :: $3 }
  2284:   | glr_sequence { [$1] }
  2285: 
  2286: glr_sequence:
  2287:   | glr_term glr_seqs { `GLR_seq ($1::$2) }
  2288:   | glr_term { $1 }
  2289: 
  2290: glr_seqs:
  2291:   | glr_term glr_seqs { $1 :: $2 }
  2292:   | glr_term { [$1] }
  2293: 
  2294: glr_entry:
  2295:   | NAME COLON glr_term { Some (snd $1), $3 }
  2296:   | glr_term { None, $1 }
  2297: 
  2298: glr_entries:
  2299:   | glr_entry glr_entries { $1 :: $2 }
  2300:   | glr_entry { [$1] }
  2301: 
  2302: glr_matching:
  2303:   | VBAR glr_entries EQRIGHTARROW expr { rstoken $1 $3, $2 , $4 }
  2304:   | VBAR EQRIGHTARROW expr { rstoken $1 $2, [] , $3 }
  2305: 
  2306: glr_matchings:
  2307:   | glr_matching glr_matchings { $1 :: $2 }
  2308:   | glr_matching { [$1] }
  2309: 
  2310: glr_production:
  2311:   | NONTERM NAME COLON expr EQUAL glr_matchings SEMI
  2312:   {
  2313:     let sr = rstoken $1 $7 in
  2314:     let t = typecode_of_expr $4 in
  2315:     `AST_glr (sr,snd $2, t, $6)
  2316:   }
  2317: 
  2318: glr_parse:
  2319:   | PARSE expr WITH glr_matchings ENDMATCH
  2320:   {
  2321:     let sr = rstoken $1 $5 in
  2322:     `AST_parse (sr,$2,$4)
  2323:   }
  2324: 
End data section to src/flx_parse.mly[32]