summaryrefslogtreecommitdiff
path: root/camlp4/ocaml_src/meta/pa_rp.ml
diff options
context:
space:
mode:
Diffstat (limited to 'camlp4/ocaml_src/meta/pa_rp.ml')
-rw-r--r--camlp4/ocaml_src/meta/pa_rp.ml641
1 files changed, 0 insertions, 641 deletions
diff --git a/camlp4/ocaml_src/meta/pa_rp.ml b/camlp4/ocaml_src/meta/pa_rp.ml
deleted file mode 100644
index ad743e8708..0000000000
--- a/camlp4/ocaml_src/meta/pa_rp.ml
+++ /dev/null
@@ -1,641 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-(***********************************************************************)
-(* *)
-(* Camlp4 *)
-(* *)
-(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
-(* *)
-(* Copyright 1998 Institut National de Recherche en Informatique et *)
-(* Automatique. Distributed only by permission. *)
-(* *)
-(***********************************************************************)
-
-(* This file has been generated by program: do not edit! *)
-
-open Pcaml;;
-
-type spat_comp =
- SpTrm of MLast.loc * MLast.patt * MLast.expr option
- | SpNtr of MLast.loc * MLast.patt * MLast.expr
- | SpStr of MLast.loc * MLast.patt
-;;
-type sexp_comp =
- SeTrm of MLast.loc * MLast.expr
- | SeNtr of MLast.loc * MLast.expr
-;;
-
-let strm_n = "strm__";;
-let peek_fun loc =
- MLast.ExAcc (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "peek"))
-;;
-let junk_fun loc =
- MLast.ExAcc (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "junk"))
-;;
-
-(* Parsers. *)
-(* In syntax generated, many cases are optimisations. *)
-
-let rec pattern_eq_expression p e =
- match p, e with
- MLast.PaLid (_, a), MLast.ExLid (_, b) -> a = b
- | MLast.PaUid (_, a), MLast.ExUid (_, b) -> a = b
- | MLast.PaApp (_, p1, p2), MLast.ExApp (_, e1, e2) ->
- pattern_eq_expression p1 e1 && pattern_eq_expression p2 e2
- | _ -> false
-;;
-
-let is_raise e =
- match e with
- MLast.ExApp (_, MLast.ExLid (_, "raise"), _) -> true
- | _ -> false
-;;
-
-let is_raise_failure e =
- match e with
- MLast.ExApp
- (_, MLast.ExLid (_, "raise"),
- MLast.ExAcc
- (_, MLast.ExUid (_, "Stream"), MLast.ExUid (_, "Failure"))) ->
- true
- | _ -> false
-;;
-
-let rec handle_failure e =
- match e with
- MLast.ExTry
- (_, te,
- [MLast.PaAcc
- (_, MLast.PaUid (_, "Stream"), MLast.PaUid (_, "Failure")), None,
- e]) ->
- handle_failure e
- | MLast.ExMat (_, me, pel) ->
- handle_failure me &&
- List.for_all
- (function
- _, None, e -> handle_failure e
- | _ -> false)
- pel
- | MLast.ExLet (_, false, pel, e) ->
- List.for_all (fun (p, e) -> handle_failure e) pel && handle_failure e
- | MLast.ExLid (_, _) | MLast.ExInt (_, _) | MLast.ExStr (_, _) |
- MLast.ExChr (_, _) | MLast.ExFun (_, _) | MLast.ExUid (_, _) ->
- true
- | MLast.ExApp (_, MLast.ExLid (_, "raise"), e) ->
- begin match e with
- MLast.ExAcc
- (_, MLast.ExUid (_, "Stream"), MLast.ExUid (_, "Failure")) ->
- false
- | _ -> true
- end
- | MLast.ExApp (_, f, x) ->
- is_constr_apply f && handle_failure f && handle_failure x
- | _ -> false
-and is_constr_apply =
- function
- MLast.ExUid (_, _) -> true
- | MLast.ExLid (_, _) -> false
- | MLast.ExApp (_, x, _) -> is_constr_apply x
- | _ -> false
-;;
-
-let rec subst v e =
- let loc = MLast.loc_of_expr e in
- match e with
- MLast.ExLid (_, x) ->
- let x = if x = v then strm_n else x in MLast.ExLid (loc, x)
- | MLast.ExUid (_, _) -> e
- | MLast.ExInt (_, _) -> e
- | MLast.ExChr (_, _) -> e
- | MLast.ExStr (_, _) -> e
- | MLast.ExAcc (_, _, _) -> e
- | MLast.ExLet (_, rf, pel, e) ->
- MLast.ExLet (loc, rf, List.map (subst_pe v) pel, subst v e)
- | MLast.ExApp (_, e1, e2) -> MLast.ExApp (loc, subst v e1, subst v e2)
- | MLast.ExTup (_, el) -> MLast.ExTup (loc, List.map (subst v) el)
- | _ -> raise Not_found
-and subst_pe v (p, e) =
- match p with
- MLast.PaLid (_, v') when v <> v' -> p, subst v e
- | _ -> raise Not_found
-;;
-
-let stream_pattern_component skont ckont =
- function
- SpTrm (loc, p, wo) ->
- MLast.ExMat
- (loc, MLast.ExApp (loc, peek_fun loc, MLast.ExLid (loc, strm_n)),
- [MLast.PaApp (loc, MLast.PaUid (loc, "Some"), p), wo,
- MLast.ExSeq
- (loc,
- [MLast.ExApp (loc, junk_fun loc, MLast.ExLid (loc, strm_n));
- skont]);
- MLast.PaAny loc, None, ckont])
- | SpNtr (loc, p, e) ->
- let e =
- match e with
- MLast.ExFun
- (_,
- [MLast.PaTyc
- (_, MLast.PaLid (_, v),
- MLast.TyApp
- (_,
- MLast.TyAcc
- (_, MLast.TyUid (_, "Stream"), MLast.TyLid (_, "t")),
- MLast.TyAny _)), None, e])
- when v = strm_n ->
- e
- | _ -> MLast.ExApp (loc, e, MLast.ExLid (loc, strm_n))
- in
- if pattern_eq_expression p skont then
- if is_raise_failure ckont then e
- else if handle_failure e then e
- else
- MLast.ExTry
- (loc, e,
- [MLast.PaAcc
- (loc, MLast.PaUid (loc, "Stream"),
- MLast.PaUid (loc, "Failure")),
- None, ckont])
- else if is_raise_failure ckont then
- MLast.ExLet (loc, false, [p, e], skont)
- else if
- pattern_eq_expression
- (MLast.PaApp (loc, MLast.PaUid (loc, "Some"), p)) skont
- then
- MLast.ExTry
- (loc, MLast.ExApp (loc, MLast.ExUid (loc, "Some"), e),
- [MLast.PaAcc
- (loc, MLast.PaUid (loc, "Stream"),
- MLast.PaUid (loc, "Failure")),
- None, ckont])
- else if is_raise ckont then
- let tst =
- if handle_failure e then e
- else
- MLast.ExTry
- (loc, e,
- [MLast.PaAcc
- (loc, MLast.PaUid (loc, "Stream"),
- MLast.PaUid (loc, "Failure")),
- None, ckont])
- in
- MLast.ExLet (loc, false, [p, tst], skont)
- else
- MLast.ExMat
- (loc,
- MLast.ExTry
- (loc, MLast.ExApp (loc, MLast.ExUid (loc, "Some"), e),
- [MLast.PaAcc
- (loc, MLast.PaUid (loc, "Stream"),
- MLast.PaUid (loc, "Failure")),
- None, MLast.ExUid (loc, "None")]),
- [MLast.PaApp (loc, MLast.PaUid (loc, "Some"), p), None, skont;
- MLast.PaAny loc, None, ckont])
- | SpStr (loc, p) ->
- try
- match p with
- MLast.PaLid (_, v) -> subst v skont
- | _ -> raise Not_found
- with
- Not_found ->
- MLast.ExLet (loc, false, [p, MLast.ExLid (loc, strm_n)], skont)
-;;
-
-let rec stream_pattern loc epo e ekont =
- function
- [] ->
- begin match epo with
- Some ep ->
- MLast.ExLet
- (loc, false,
- [ep,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExLid (loc, "count")),
- MLast.ExLid (loc, strm_n))],
- e)
- | _ -> e
- end
- | (spc, err) :: spcl ->
- let skont =
- let ekont err =
- let str =
- match err with
- Some estr -> estr
- | _ -> MLast.ExStr (loc, "")
- in
- MLast.ExApp
- (loc, MLast.ExLid (loc, "raise"),
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExUid (loc, "Error")),
- str))
- in
- stream_pattern loc epo e ekont spcl
- in
- let ckont = ekont err in stream_pattern_component skont ckont spc
-;;
-
-let stream_patterns_term loc ekont tspel =
- let pel =
- List.map
- (fun (p, w, loc, spcl, epo, e) ->
- let p = MLast.PaApp (loc, MLast.PaUid (loc, "Some"), p) in
- let e =
- let ekont err =
- let str =
- match err with
- Some estr -> estr
- | _ -> MLast.ExStr (loc, "")
- in
- MLast.ExApp
- (loc, MLast.ExLid (loc, "raise"),
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExUid (loc, "Error")),
- str))
- in
- let skont = stream_pattern loc epo e ekont spcl in
- MLast.ExSeq
- (loc,
- [MLast.ExApp (loc, junk_fun loc, MLast.ExLid (loc, strm_n));
- skont])
- in
- p, w, e)
- tspel
- in
- let pel = pel @ [MLast.PaAny loc, None, ekont ()] in
- MLast.ExMat
- (loc, MLast.ExApp (loc, peek_fun loc, MLast.ExLid (loc, strm_n)), pel)
-;;
-
-let rec group_terms =
- function
- ((SpTrm (loc, p, w), None) :: spcl, epo, e) :: spel ->
- let (tspel, spel) = group_terms spel in
- (p, w, loc, spcl, epo, e) :: tspel, spel
- | spel -> [], spel
-;;
-
-let rec parser_cases loc =
- function
- [] ->
- MLast.ExApp
- (loc, MLast.ExLid (loc, "raise"),
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExUid (loc, "Failure")))
- | spel ->
- match group_terms spel with
- [], (spcl, epo, e) :: spel ->
- stream_pattern loc epo e (fun _ -> parser_cases loc spel) spcl
- | tspel, spel ->
- stream_patterns_term loc (fun _ -> parser_cases loc spel) tspel
-;;
-
-let cparser loc bpo pc =
- let e = parser_cases loc pc in
- let e =
- match bpo with
- Some bp ->
- MLast.ExLet
- (loc, false,
- [bp,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExLid (loc, "count")),
- MLast.ExLid (loc, strm_n))],
- e)
- | None -> e
- in
- let p =
- MLast.PaTyc
- (loc, MLast.PaLid (loc, strm_n),
- MLast.TyApp
- (loc,
- MLast.TyAcc
- (loc, MLast.TyUid (loc, "Stream"), MLast.TyLid (loc, "t")),
- MLast.TyAny loc))
- in
- MLast.ExFun (loc, [p, None, e])
-;;
-
-let cparser_match loc me bpo pc =
- let pc = parser_cases loc pc in
- let e =
- match bpo with
- Some bp ->
- MLast.ExLet
- (loc, false,
- [bp,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExLid (loc, "count")),
- MLast.ExLid (loc, strm_n))],
- pc)
- | None -> pc
- in
- match me with
- MLast.ExLid (_, x) when x = strm_n -> e
- | _ ->
- MLast.ExLet
- (loc, false,
- [MLast.PaTyc
- (loc, MLast.PaLid (loc, strm_n),
- MLast.TyApp
- (loc,
- MLast.TyAcc
- (loc, MLast.TyUid (loc, "Stream"), MLast.TyLid (loc, "t")),
- MLast.TyAny loc)),
- me],
- e)
-;;
-
-(* streams *)
-
-let rec not_computing =
- function
- MLast.ExLid (_, _) | MLast.ExUid (_, _) | MLast.ExInt (_, _) |
- MLast.ExFlo (_, _) | MLast.ExChr (_, _) | MLast.ExStr (_, _) ->
- true
- | MLast.ExApp (_, x, y) -> is_cons_apply_not_computing x && not_computing y
- | _ -> false
-and is_cons_apply_not_computing =
- function
- MLast.ExUid (_, _) -> true
- | MLast.ExLid (_, _) -> false
- | MLast.ExApp (_, x, y) -> is_cons_apply_not_computing x && not_computing y
- | _ -> false
-;;
-
-let slazy loc e =
- match e with
- MLast.ExApp (_, f, MLast.ExUid (_, "()")) ->
- begin match f with
- MLast.ExLid (_, _) -> f
- | _ -> MLast.ExFun (loc, [MLast.PaAny loc, None, e])
- end
- | _ -> MLast.ExFun (loc, [MLast.PaAny loc, None, e])
-;;
-
-let rec cstream gloc =
- function
- [] ->
- let loc = gloc in
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "sempty"))
- | [SeTrm (loc, e)] ->
- if not_computing e then
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "ising")),
- e)
- else
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "lsing")),
- slazy loc e)
- | SeTrm (loc, e) :: secl ->
- if not_computing e then
- MLast.ExApp
- (loc,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExLid (loc, "icons")),
- e),
- cstream gloc secl)
- else
- MLast.ExApp
- (loc,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"),
- MLast.ExLid (loc, "lcons")),
- slazy loc e),
- cstream gloc secl)
- | [SeNtr (loc, e)] ->
- if not_computing e then e
- else
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "slazy")),
- slazy loc e)
- | SeNtr (loc, e) :: secl ->
- if not_computing e then
- MLast.ExApp
- (loc,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "iapp")),
- e),
- cstream gloc secl)
- else
- MLast.ExApp
- (loc,
- MLast.ExApp
- (loc,
- MLast.ExAcc
- (loc, MLast.ExUid (loc, "Stream"), MLast.ExLid (loc, "lapp")),
- slazy loc e),
- cstream gloc secl)
-;;
-
-(* Syntax extensions in Revised Syntax grammar *)
-
-Grammar.extend
- (let _ = (expr : 'expr Grammar.Entry.e) in
- let grammar_entry_create s =
- Grammar.Entry.create (Grammar.of_entry expr) s
- in
- let parser_case : 'parser_case Grammar.Entry.e =
- grammar_entry_create "parser_case"
- and stream_patt : 'stream_patt Grammar.Entry.e =
- grammar_entry_create "stream_patt"
- and stream_patt_comp_err : 'stream_patt_comp_err Grammar.Entry.e =
- grammar_entry_create "stream_patt_comp_err"
- and stream_patt_comp : 'stream_patt_comp Grammar.Entry.e =
- grammar_entry_create "stream_patt_comp"
- and ipatt : 'ipatt Grammar.Entry.e = grammar_entry_create "ipatt"
- and stream_expr_comp : 'stream_expr_comp Grammar.Entry.e =
- grammar_entry_create "stream_expr_comp"
- in
- [Grammar.Entry.obj (expr : 'expr Grammar.Entry.e),
- Some (Gramext.Level "top"),
- [None, None,
- [[Gramext.Stoken ("", "match"); Gramext.Sself;
- Gramext.Stoken ("", "with"); Gramext.Stoken ("", "parser");
- Gramext.Sopt
- (Gramext.Snterm
- (Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e)));
- Gramext.Snterm
- (Grammar.Entry.obj (parser_case : 'parser_case Grammar.Entry.e))],
- Gramext.action
- (fun (pc : 'parser_case) (po : 'ipatt option) _ _ (e : 'expr) _
- (loc : int * int) ->
- (cparser_match loc e po [pc] : 'expr));
- [Gramext.Stoken ("", "match"); Gramext.Sself;
- Gramext.Stoken ("", "with"); Gramext.Stoken ("", "parser");
- Gramext.Sopt
- (Gramext.Snterm
- (Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e)));
- Gramext.Stoken ("", "[");
- Gramext.Slist0sep
- (Gramext.Snterm
- (Grammar.Entry.obj (parser_case : 'parser_case Grammar.Entry.e)),
- Gramext.Stoken ("", "|"));
- Gramext.Stoken ("", "]")],
- Gramext.action
- (fun _ (pcl : 'parser_case list) _ (po : 'ipatt option) _ _
- (e : 'expr) _ (loc : int * int) ->
- (cparser_match loc e po pcl : 'expr));
- [Gramext.Stoken ("", "parser");
- Gramext.Sopt
- (Gramext.Snterm
- (Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e)));
- Gramext.Snterm
- (Grammar.Entry.obj (parser_case : 'parser_case Grammar.Entry.e))],
- Gramext.action
- (fun (pc : 'parser_case) (po : 'ipatt option) _ (loc : int * int) ->
- (cparser loc po [pc] : 'expr));
- [Gramext.Stoken ("", "parser");
- Gramext.Sopt
- (Gramext.Snterm
- (Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e)));
- Gramext.Stoken ("", "[");
- Gramext.Slist0sep
- (Gramext.Snterm
- (Grammar.Entry.obj (parser_case : 'parser_case Grammar.Entry.e)),
- Gramext.Stoken ("", "|"));
- Gramext.Stoken ("", "]")],
- Gramext.action
- (fun _ (pcl : 'parser_case list) _ (po : 'ipatt option) _
- (loc : int * int) ->
- (cparser loc po pcl : 'expr))]];
- Grammar.Entry.obj (parser_case : 'parser_case Grammar.Entry.e), None,
- [None, None,
- [[Gramext.Stoken ("", "[:");
- Gramext.Snterm
- (Grammar.Entry.obj (stream_patt : 'stream_patt Grammar.Entry.e));
- Gramext.Stoken ("", ":]");
- Gramext.Sopt
- (Gramext.Snterm
- (Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e)));
- Gramext.Stoken ("", "->");
- Gramext.Snterm (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) _ (po : 'ipatt option) _ (sp : 'stream_patt) _
- (loc : int * int) ->
- (sp, po, e : 'parser_case))]];
- Grammar.Entry.obj (stream_patt : 'stream_patt Grammar.Entry.e), None,
- [None, None,
- [[], Gramext.action (fun (loc : int * int) -> ([] : 'stream_patt));
- [Gramext.Snterm
- (Grammar.Entry.obj
- (stream_patt_comp : 'stream_patt_comp Grammar.Entry.e));
- Gramext.Stoken ("", ";");
- Gramext.Slist1sep
- (Gramext.Snterm
- (Grammar.Entry.obj
- (stream_patt_comp_err :
- 'stream_patt_comp_err Grammar.Entry.e)),
- Gramext.Stoken ("", ";"))],
- Gramext.action
- (fun (sp : 'stream_patt_comp_err list) _ (spc : 'stream_patt_comp)
- (loc : int * int) ->
- ((spc, None) :: sp : 'stream_patt));
- [Gramext.Snterm
- (Grammar.Entry.obj
- (stream_patt_comp : 'stream_patt_comp Grammar.Entry.e))],
- Gramext.action
- (fun (spc : 'stream_patt_comp) (loc : int * int) ->
- ([spc, None] : 'stream_patt))]];
- Grammar.Entry.obj
- (stream_patt_comp_err : 'stream_patt_comp_err Grammar.Entry.e),
- None,
- [None, None,
- [[Gramext.Snterm
- (Grammar.Entry.obj
- (stream_patt_comp : 'stream_patt_comp Grammar.Entry.e));
- Gramext.Sopt
- (Gramext.srules
- [[Gramext.Stoken ("", "?");
- Gramext.Snterm
- (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) _ (loc : int * int) -> (e : 'e__1))])],
- Gramext.action
- (fun (eo : 'e__1 option) (spc : 'stream_patt_comp)
- (loc : int * int) ->
- (spc, eo : 'stream_patt_comp_err))]];
- Grammar.Entry.obj (stream_patt_comp : 'stream_patt_comp Grammar.Entry.e),
- None,
- [None, None,
- [[Gramext.Snterm (Grammar.Entry.obj (patt : 'patt Grammar.Entry.e))],
- Gramext.action
- (fun (p : 'patt) (loc : int * int) ->
- (SpStr (loc, p) : 'stream_patt_comp));
- [Gramext.Snterm (Grammar.Entry.obj (patt : 'patt Grammar.Entry.e));
- Gramext.Stoken ("", "=");
- Gramext.Snterm (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) _ (p : 'patt) (loc : int * int) ->
- (SpNtr (loc, p, e) : 'stream_patt_comp));
- [Gramext.Stoken ("", "`");
- Gramext.Snterm (Grammar.Entry.obj (patt : 'patt Grammar.Entry.e));
- Gramext.Sopt
- (Gramext.srules
- [[Gramext.Stoken ("", "when");
- Gramext.Snterm
- (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) _ (loc : int * int) -> (e : 'e__2))])],
- Gramext.action
- (fun (eo : 'e__2 option) (p : 'patt) _ (loc : int * int) ->
- (SpTrm (loc, p, eo) : 'stream_patt_comp))]];
- Grammar.Entry.obj (ipatt : 'ipatt Grammar.Entry.e), None,
- [None, None,
- [[Gramext.Stoken ("LIDENT", "")],
- Gramext.action
- (fun (i : string) (loc : int * int) ->
- (MLast.PaLid (loc, i) : 'ipatt))]];
- Grammar.Entry.obj (expr : 'expr Grammar.Entry.e),
- Some (Gramext.Level "simple"),
- [None, None,
- [[Gramext.Stoken ("", "[:");
- Gramext.Slist0sep
- (Gramext.Snterm
- (Grammar.Entry.obj
- (stream_expr_comp : 'stream_expr_comp Grammar.Entry.e)),
- Gramext.Stoken ("", ";"));
- Gramext.Stoken ("", ":]")],
- Gramext.action
- (fun _ (se : 'stream_expr_comp list) _ (loc : int * int) ->
- (cstream loc se : 'expr))]];
- Grammar.Entry.obj (stream_expr_comp : 'stream_expr_comp Grammar.Entry.e),
- None,
- [None, None,
- [[Gramext.Snterm (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) (loc : int * int) ->
- (SeNtr (loc, e) : 'stream_expr_comp));
- [Gramext.Stoken ("", "`");
- Gramext.Snterm (Grammar.Entry.obj (expr : 'expr Grammar.Entry.e))],
- Gramext.action
- (fun (e : 'expr) _ (loc : int * int) ->
- (SeTrm (loc, e) : 'stream_expr_comp))]]]);;