|
Packit Service |
823e34 |
(* pa_r.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
|
|
Packit Service |
823e34 |
(***********************************************************************)
|
|
Packit Service |
823e34 |
(* *)
|
|
Packit Service |
823e34 |
(* Camlp4 *)
|
|
Packit Service |
823e34 |
(* *)
|
|
Packit Service |
823e34 |
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
|
|
Packit Service |
823e34 |
(* *)
|
|
Packit Service |
823e34 |
(* Copyright 2002 Institut National de Recherche en Informatique et *)
|
|
Packit Service |
823e34 |
(* en Automatique. All rights reserved. This file is distributed *)
|
|
Packit Service |
823e34 |
(* under the terms of the GNU Library General Public License, with *)
|
|
Packit Service |
823e34 |
(* the special exception on linking described in file *)
|
|
Packit Service |
823e34 |
(* ../../../LICENSE. *)
|
|
Packit Service |
823e34 |
(* *)
|
|
Packit Service |
823e34 |
(***********************************************************************)
|
|
Packit Service |
823e34 |
|
|
Packit Service |
823e34 |
|
|
Packit Service |
823e34 |
open Pcaml;
|
|
Packit Service |
823e34 |
|
|
Packit Service |
823e34 |
EXTEND
|
|
Packit Service |
823e34 |
GLOBAL: expr;
|
|
Packit Service |
823e34 |
expr: LEVEL "top"
|
|
Packit Service |
823e34 |
[ [ n = box_type; d = SELF; "begin";
|
|
Packit Service |
823e34 |
el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
|
|
Packit Service |
823e34 |
let el = [<:expr< Format.$lid:"open_" ^ n$ $d$ >> :: el] in
|
|
Packit Service |
823e34 |
let el = el @ [<:expr< Format.close_box () >>] in
|
|
Packit Service |
823e34 |
<:expr< do { $list:el$ } >>
|
|
Packit Service |
823e34 |
| "hbox"; "begin"; el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
|
|
Packit Service |
823e34 |
let el = [<:expr< Format.open_hbox () >> :: el] in
|
|
Packit Service |
823e34 |
let el = el @ [<:expr< Format.close_box () >>] in
|
|
Packit Service |
823e34 |
<:expr< do { $list:el$ } >>
|
|
Packit Service |
823e34 |
| "nobox"; "begin"; el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
|
|
Packit Service |
823e34 |
match el with
|
|
Packit Service |
823e34 |
[ [e] -> e
|
|
Packit Service |
823e34 |
| _ -> <:expr< do { $list:el$ } >> ] ] ]
|
|
Packit Service |
823e34 |
;
|
|
Packit Service |
823e34 |
box_type:
|
|
Packit Service |
823e34 |
[ [ n = "hovbox" -> n
|
|
Packit Service |
823e34 |
| n = "hvbox" -> n
|
|
Packit Service |
823e34 |
| n = "vbox" -> n
|
|
Packit Service |
823e34 |
| n = "box" -> n ] ]
|
|
Packit Service |
823e34 |
;
|
|
Packit Service |
823e34 |
box_expr:
|
|
Packit Service |
823e34 |
[ [ s = STRING -> <:expr< Format.print_string $str:s$ >>
|
|
Packit Service |
823e34 |
| UIDENT "STRING"; e = expr -> <:expr< Format.print_string $e$ >>
|
|
Packit Service |
823e34 |
| UIDENT "INT"; e = expr -> <:expr< Format.print_int $e$ >>
|
|
Packit Service |
823e34 |
| "/-" -> <:expr< Format.print_space () >>
|
|
Packit Service |
823e34 |
| "//" -> <:expr< Format.print_cut () >>
|
|
Packit Service |
823e34 |
| "!/" -> <:expr< Format.force_newline () >>
|
|
Packit Service |
823e34 |
| "?/" -> <:expr< Format.print_if_newline () >>
|
|
Packit Service |
823e34 |
| e = expr -> e ] ]
|
|
Packit Service |
823e34 |
;
|
|
Packit Service |
823e34 |
END;
|