1980: regmatch_expr: 1981: | REGMATCH expr WITH regmatch_alternatives ENDMATCH 1982: { 1983: let sr = rstoken $1 $5 in 1984: `AST_string_regmatch (sr,($2,$4)) 1985: 1986: (* 1987: let pa = `PAT_as (sr,`PAT_any sr,"_a") in 1988: let pb = `PAT_as (sr,`PAT_any sr,"_b") in 1989: let p = `PAT_tuple (sr,[pa;pb]) in 1990: let a = `AST_name (sr,"_a",[]) in 1991: let b = `AST_name (sr,"_b",[]) in 1992: let lexmod = `AST_name(sr,"Lexer",[]) in 1993: let sb = `AST_lookup(sr,(lexmod,"bounds",[])) in 1994: let se = `AST_apply(sr,(sb,$2)) in 1995: `AST_letin (sr,(p,se, 1996: `AST_regmatch (sr,(a,b,$4))) 1997: ) 1998: *) 1999: } 2000: 2001: | REGLEX expr TO expr WITH regmatch_alternatives ENDMATCH 2002: { 2003: `AST_reglex (rstoken $1 $7,($2,$4,$6)) 2004: } 2005: 2006: regmatch_alternatives: 2007: | regmatch_alternatives regmatch_alternative { $2 :: $1 } 2008: | regmatch_alternative { [$1] } 2009: 2010: regmatch_alternative: 2011: | VBAR re1 EQRIGHTARROW expr { $2,$4 } 2012: 2013: