X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=code%2Fcaml-lambda%2Fq_lambda.ml;fp=code%2Fcaml-lambda%2Fq_lambda.ml;h=0000000000000000000000000000000000000000;hp=66762e56f792d96b0ed417e26040da2382c8955a;hb=fd698b815e417dec463cb0f0e9ed056ab83daed6;hpb=573a8b36ce653c84c2aecb2b81ef99128cb41d13 diff --git a/code/caml-lambda/q_lambda.ml b/code/caml-lambda/q_lambda.ml deleted file mode 100644 index 66762e56..00000000 --- a/code/caml-lambda/q_lambda.ml +++ /dev/null @@ -1,51 +0,0 @@ -(* Please keep me in sync with brion.inria.fr/gallium/index.php/Lambda_calculus_quotations *) - -open Camlp4.PreCast;; -module CamlSyntax = Camlp4OCamlParser.Make(Camlp4OCamlRevisedParser.Make(Syntax));; - -let expr_of_string = CamlSyntax.Gram.parse_string CamlSyntax.expr_eoi;; - -module LambdaGram = MakeGram(Lexer);; - -let term = LambdaGram.Entry.mk "term";; -let term_eoi = LambdaGram.Entry.mk "lambda term quotation";; - -Camlp4_config.antiquotations := true;; - -EXTEND LambdaGram - GLOBAL: term term_eoi; - term: - [ "top" - [ "fun"; v = var; "->"; t = term -> <:expr< `Lam(var $v$, $t$) >> - | "fun"; v = var; v' = var; "->"; t = term -> <:expr< `Lam(var $v$, `Lam(var $v'$, $t$)) >> - | "fun"; v = var; v' = var; v'' = var; "->"; t = term -> <:expr< `Lam(var $v$, `Lam(var $v'$, `Lam(var $v''$, $t$))) >> - | "fun"; v = var; v' = var; v'' = var; v''' = var; "->"; t = term -> <:expr< `Lam(var $v$, `Lam(var $v'$, `Lam(var $v''$, `Lam(var $v'''$, $t$)))) >> - | "fun"; v = var; v' = var; v'' = var; v''' = var; v'''' = var; "->"; t = term -> <:expr< `Lam(var $v$, `Lam(var $v'$, `Lam(var $v''$, `Lam(var $v'''$, `Lam(var $v''''$, $t$))))) >> - ] - - | "app" - [ t1 = SELF; t2 = SELF -> <:expr< `App($t1$, $t2$) >> ] - - | "simple" - [ `ANTIQUOT((""|"term"), a) -> expr_of_string _loc a - | v = var -> <:expr< `Var(var $v$) >> - | "("; t = term; ")" -> t - ] - - ]; - var: - [[ v = LIDENT -> <:expr< $str:v$ >> - | `ANTIQUOT((""|"var"), a) -> expr_of_string _loc a - ]]; - term_eoi: - [[ t = term; `EOI -> t ]]; -END;; - -let expand_lambda_quot_expr loc _loc_name_opt quotation_contents = - LambdaGram.parse_string term_eoi loc quotation_contents;; - -(* to have this syntax <:lam< fun k -> k >> *) -Syntax.Quotation.add "lam" Syntax.Quotation.DynAst.expr_tag expand_lambda_quot_expr;; - -Syntax.Quotation.default := "lam";; -