Module EChandraSutraDhar_lib.Ast

Copyright 2025-2026, Ram Prosad Chandra Sutra Dhar

SPDX-License-Identifier: LGPL-3.0-or-later

type ident = string
val pp_ident : Ppx_deriving_runtime.Format.formatter -> ident -> Ppx_deriving_runtime.unit
val show_ident : ident -> Ppx_deriving_runtime.string
type is_rec = bool
val pp_is_rec : Ppx_deriving_runtime.Format.formatter -> is_rec -> Ppx_deriving_runtime.unit
val show_is_rec : is_rec -> Ppx_deriving_runtime.string
type bin_oper =
  1. | Plus
  2. | Minus
  3. | Multiply
  4. | Division
  5. | And
  6. | Or
  7. | GretestEqual
  8. | LowestEqual
  9. | GreaterThan
  10. | LowerThan
  11. | Equal
  12. | NotEqual
val pp_bin_oper : Ppx_deriving_runtime.Format.formatter -> bin_oper -> Ppx_deriving_runtime.unit
val show_bin_oper : bin_oper -> Ppx_deriving_runtime.string
type unar_oper =
  1. | Negative
  2. | Not
val pp_unar_oper : Ppx_deriving_runtime.Format.formatter -> unar_oper -> Ppx_deriving_runtime.unit
val show_unar_oper : unar_oper -> Ppx_deriving_runtime.string
type const =
  1. | ConstInt of int
  2. | ConstBool of bool
  3. | ConstString of string
val pp_const : Ppx_deriving_runtime.Format.formatter -> const -> Ppx_deriving_runtime.unit
val show_const : const -> Ppx_deriving_runtime.string
type binder = int
val pp_binder : Ppx_deriving_runtime.Format.formatter -> binder -> Ppx_deriving_runtime.unit
val show_binder : binder -> Ppx_deriving_runtime.string
type ty =
  1. | TyVar of binder
  2. | TyPrim of string
  3. | TyArrow of ty * ty
  4. | TyList of ty
  5. | TyTuple of ty list
  6. | TyOption of ty
val show_ty : ty -> Ppx_deriving_runtime.string
type pattern =
  1. | PatVariable of ident
  2. | PatConst of const
  3. | PatTuple of pattern * pattern * pattern list
  4. | PatAny
  5. | PatType of pattern * ty
  6. | PatUnit
  7. | PatList of pattern list
  8. | PatOption of pattern option
val pp_pattern : Ppx_deriving_runtime.Format.formatter -> pattern -> Ppx_deriving_runtime.unit
val show_pattern : pattern -> Ppx_deriving_runtime.string
type expr =
  1. | ExpIdent of ident
  2. | ExpConst of const
  3. | ExpBranch of expr * expr * expr option
  4. | ExpBinOper of bin_oper * expr * expr
  5. | ExpUnarOper of unar_oper * expr
  6. | ExpTuple of expr * expr * expr list
  7. | ExpList of expr list
  8. | ExpLambda of pattern list * expr
  9. | ExpTypeAnnotation of expr * ty
  10. | ExpLet of is_rec * bind * bind list * expr
  11. | ExpFunction of expr * expr
  12. | ExpOption of expr option
and bind = pattern * expr
val pp_expr : Ppx_deriving_runtime.Format.formatter -> expr -> Ppx_deriving_runtime.unit
val show_expr : expr -> Ppx_deriving_runtime.string
val pp_bind : Ppx_deriving_runtime.Format.formatter -> bind -> Ppx_deriving_runtime.unit
val show_bind : bind -> Ppx_deriving_runtime.string
type structure =
  1. | SEval of expr
  2. | SValue of is_rec * bind * bind list
val pp_structure : Ppx_deriving_runtime.Format.formatter -> structure -> Ppx_deriving_runtime.unit
val show_structure : structure -> Ppx_deriving_runtime.string
type program = structure list
val pp_program : Ppx_deriving_runtime.Format.formatter -> program -> Ppx_deriving_runtime.unit
val show_program : program -> Ppx_deriving_runtime.string
val pp_ty : Stdlib.Format.formatter -> ty -> unit