package acgtk
Abstract Categorial Grammar development toolkit
Install
Dune Dependency
Authors
Maintainers
Sources
acg-2.1.0-20240219.tar.gz
sha512=5d380a947658fb1201895cb4cb449b1f60f54914c563e85181d628a89f045c1dd7b5b2226bb7865dd090f87caa9187e0ea6c7a4ee3dc3dda340d404c4e76c7c2
doc/src/acgtk.logic/abstract_syntax.ml.html
Source file abstract_syntax.ml
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
(**************************************************************************) (* *) (* ACG development toolkit *) (* *) (* Copyright 2008-2023 INRIA *) (* *) (* More information on "https://acg.loria.fr/" *) (* License: CeCILL, see the LICENSE file or "http://www.cecill.info" *) (* Authors: see the AUTHORS file *) (* *) (* *) (* *) (* *) (* *) (**************************************************************************) module Abstract_syntax = struct type location = Lexing.position * Lexing.position (** The type of the kind of associativity for infix operators *) type associativity = Left | Right | NonAss (** The type of the syntactic behaviour of constants defined in the signature *) type syntactic_behavior = | Default | Prefix | Infix of associativity * float (* the float indicates precedence in the total order of infix operators *) | Binder type abstraction = Linear | Non_linear type term = | Var of (string * location) (** If the term is variable (bound by a binder)*) | Const of (string * location) (** If the term is a constant (not bound by a binder) *) | Abs of (string * location * term * location) (** If the term is a intuitionistic abstraction *) | LAbs of (string * location * term * location) (** If the term is a linear abstraction *) | App of (term * term * location) (** If the term is an application *) let rec unlinearize_term = function | Var _ as v -> v | Const _ as c -> c | Abs (x, loc, t, loc') -> Abs (x, loc, unlinearize_term t, loc') | LAbs (x, loc, t, loc') -> Abs (x, loc, unlinearize_term t, loc') | App (t, u, loc) -> App (unlinearize_term t, unlinearize_term u, loc) type type_def = | Type_atom of (string * location * term list) (** If the type is atomic. The third parameter is the terms to which the type is applied in case of a dependent type. The list is empty if the type does not depend on any type *) | Linear_arrow of (type_def * type_def * location) (** If the type is described with a linear abstraction *) | Arrow of (type_def * type_def * location) (** If the type is described with a intuitionistic abstraction *) (* | Dep of (string * location * type_def) * type_def * location (** If the type is a dependent type *) | Type_Abs of (string * location * type_def) * location (** If the type is a dependent type build with an abstraction *) *) type sig_entry = | Type_decl of (string * location * kind) (** The first parameter ([string]) is the name of the type, the second parameter is the place in the file where it was defined *) | Type_def of (string * location * type_def * kind) (** Tthe first parameter ([string]) is the name of the defined type, the second parameter is the place in the file where it was defined and the last parameter is its value *) | Term_decl of (string * syntactic_behavior * location * type_def) (** The first parameter ([string]) is the name of the constant, the second parameter is the place in the file where it was defined and the last parameter is its type *) | Term_def of (string * syntactic_behavior * location * term * type_def) (** The first parameter ([string]) is the name of the constant, the second parameter is the place in the file where it was defined and the last parameter is its value *) and kind = K of type_def list type lex_entry = | Type of (string * location * type_def) | Constant of (string * location * term) end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>