Skip to content
This repository
tag: v768
Fetching contributors…

Cannot retrieve contributors at this time

file 51 lines (38 sloc) 1.751 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
(*
    Copyright © 2011 MLstate

    This file is part of OPA.

    OPA is free software: you can redistribute it and/or modify it under the
    terms of the GNU Affero General Public License, version 3, as published by
    the Free Software Foundation.

    OPA is distributed in the hope that it will be useful, but WITHOUT ANY
    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
    more details.

    You should have received a copy of the GNU Affero General Public License
    along with OPA. If not, see <http://www.gnu.org/licenses/>.
*)
read default.trx
read ocaml_types.trx
read ocaml_keywords.trx
read ocaml_parser.trx

types:{{
open Ocaml
open Tgrammar

type idl =
  | IDLLet of Ocaml.expr
  | IDLType of string * Ocaml.type_expr * string option
  | IDLSar of string * string * string
}}

spc <- (Default.sharpcomment $ / Default.space $ / Default.mlcomment $)* $
delimitor <- ";;" $ / Default.eol $

let <- Ocaml_parser.Let spc delimitor? spc {{ IDLLet __1 }}

typident <- Ocaml_types.typevars? Ocaml_types.typeIdent $_
type <- Ocaml_types.typedeflist

deftype <- Ocaml_keywords.TYPE spc typident spc '=' spc type spc delimitor? spc
           {{ IDLType (__3, __7, None) }}

sar <- Ocaml_keywords.VAL Ocaml_parser.mlIdent spc ":" spc typident spc "->" spc typident spc delimitor? spc
       {{ IDLSar (__2,__6,__10) }}
     / Ocaml_keywords.VAL Ocaml_parser.mlIdent spc ":" spc typident spc delimitor? spc
       {{ IDLSar (__2,__6,"") }}

ext <- "external" spc typident spc ":" spc type spc "=" spc Default.string spc delimitor? spc {{ IDLType (__3,__7,Some __11) }}

+idls : {idl list} <- spc (sar / deftype / let / ext)* {{ __2 }}
Something went wrong with that request. Please try again.