Module Perk.Ast

Abstract Syntax Tree of a Perk program.

type 'a annotated = {
  1. loc : Location.location;
  2. node : 'a;
}
val pp_annotated : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> Ppx_deriving_runtime.Format.formatter -> 'a annotated -> Ppx_deriving_runtime.unit
val show_annotated : 'a. (Ppx_deriving_runtime.Format.formatter -> 'a -> Ppx_deriving_runtime.unit) -> 'a annotated -> Ppx_deriving_runtime.string
val equal_annotated : 'a. ('a -> 'a -> Ppx_deriving_runtime.bool) -> 'a annotated -> 'a annotated -> Ppx_deriving_runtime.bool
val (@@) : 'a annotated -> Location.location
val ($) : 'a annotated -> 'a
val annotate : 'a -> Location.location -> 'a annotated
val annotate_2 : Location.location -> 'a -> 'a annotated
val annotate_code : 'a -> (Stdlib.Lexing.position * Stdlib.Lexing.position) -> string -> 'a annotated
val annotate_2_code : string -> (Stdlib.Lexing.position * Stdlib.Lexing.position) -> 'a -> 'a annotated
val annotate_dummy : 'a -> 'a annotated
val annot_copy : 'a annotated -> 'b -> 'b annotated
type perkident = string
val pp_perkident : Ppx_deriving_runtime.Format.formatter -> perkident -> Ppx_deriving_runtime.unit
val show_perkident : perkident -> Ppx_deriving_runtime.string
val equal_perkident : perkident -> perkident -> Ppx_deriving_runtime.bool
type perktype_attribute =
  1. | Public
  2. | Private
  3. | Static
val pp_perktype_attribute : Ppx_deriving_runtime.Format.formatter -> perktype_attribute -> Ppx_deriving_runtime.unit
val show_perktype_attribute : perktype_attribute -> Ppx_deriving_runtime.string
val equal_perktype_attribute : perktype_attribute -> perktype_attribute -> Ppx_deriving_runtime.bool
type perktype_qualifier =
  1. | Const
  2. | Volatile
  3. | Restrict
val pp_perktype_qualifier : Ppx_deriving_runtime.Format.formatter -> perktype_qualifier -> Ppx_deriving_runtime.unit
val show_perktype_qualifier : perktype_qualifier -> Ppx_deriving_runtime.string
val equal_perktype_qualifier : perktype_qualifier -> perktype_qualifier -> Ppx_deriving_runtime.bool
type perktype_partial =
  1. | Basetype of string
  2. | Funtype of perktype list * perktype
    (*

    types of args, return type

    *)
  3. | Lambdatype of perktype list * perktype * perkvardesc list
  4. | Pointertype of perktype
  5. | Arraytype of perktype * int option
  6. | Structtype of string * perkdef list
  7. | ArcheType of perkident * perkdecl list
  8. | Modeltype of perkident * perkident list * (perktype_attribute list * perkdecl) list * perktype list * perkident list
  9. | Optiontype of perktype
  10. | Tupletype of perktype list
  11. | ArchetypeSum of perktype list
  12. | Vararg
  13. | Infer
and perkvardesc = perktype * perkident
and perkdecl = perkvardesc
and binop =
  1. | Add
  2. | Sub
  3. | Mul
  4. | Div
  5. | Eq
  6. | Lt
  7. | Leq
  8. | Gt
  9. | Geq
  10. | Neq
  11. | Land
  12. | Lor
and preunop =
  1. | Neg
  2. | Not
  3. | Dereference
  4. | Reference
  5. | PreIncrement
  6. | PreDecrement
and postunop =
  1. | PostIncrement
  2. | PostDecrement
  3. | OptionGet of perktype option
  4. | OptionIsSome
and perkdef = perkdecl * expr_a
and perkfundef = perktype * perkident * perkvardesc list * command_a
and expr_t =
  1. | Nothing of perktype
  2. | Something of expr_a * perktype
  3. | Bool of bool
  4. | Int of int
  5. | Float of float
  6. | Char of char
  7. | String of string
  8. | Var of perkident
  9. | Apply of expr_a * expr_a list * perktype option
  10. | Binop of binop * expr_a * expr_a
  11. | PreUnop of preunop * expr_a
  12. | Lambda of perktype * perkvardesc list * command_a * perkvardesc list
  13. | PostUnop of postunop * expr_a
  14. | Parenthesised of expr_a
  15. | Subscript of expr_a * expr_a
  16. | TupleSubscript of expr_a * int
  17. | Summon of perkident * expr_a list
  18. | Make of perkident * (perkident * expr_a) list
  19. | Access of expr_a * perkident * perktype option * perktype option
  20. | Tuple of expr_a list * perktype option
  21. | As of perkident * perktype list * perktype option
  22. | Array of expr_a list
    (*

    Cast ((from_type, to_type), expression)

    *)
  23. | Cast of perktype * perktype * expr_a
  24. | IfThenElseExpr of expr_a * expr_a * expr_a
and command_t =
  1. | InlineCCmd of string
  2. | DefCmd of perkdef * perktype option
  3. | Block of command_a
  4. | Assign of expr_a * expr_a * perktype option * perktype option
  5. | Seq of command_a * command_a
  6. | IfThenElse of expr_a * command_a * command_a
  7. | Whiledo of expr_a * command_a
  8. | Dowhile of expr_a * command_a
  9. | For of command_a * expr_a * command_a * command_a
  10. | Expr of expr_a
  11. | Switch of expr_a * (expr_a * command_a) list
  12. | Skip
  13. | Banish of perkident
  14. | Return of expr_a option
  15. | Break
  16. | Continue
and topleveldef_t =
  1. | InlineC of string
  2. | Import of string
  3. | Open of string
  4. | Extern of perkident * perktype
  5. | Def of perkdef * perktype option
  6. | Fundef of perkfundef
  7. | Archetype of perkident * declorfun_a list
  8. | Model of perkident * perkident list * deforfun_a list
  9. | Struct of perkident * perkdef list
and deforfun_t =
  1. | DefVar of perktype_attribute list * perkdef
  2. | DefFun of perktype_attribute list * perkfundef
and declorfun_t =
  1. | DeclVar of perkdecl
  2. | DeclFun of perkdecl
and expr_a = expr_t annotated
and command_a = command_t annotated
and topleveldef_a = topleveldef_t annotated
and deforfun_a = deforfun_t annotated
and declorfun_a = declorfun_t annotated
val pp_perktype_partial : Ppx_deriving_runtime.Format.formatter -> perktype_partial -> Ppx_deriving_runtime.unit
val show_perktype_partial : perktype_partial -> Ppx_deriving_runtime.string
val pp_perktype : Ppx_deriving_runtime.Format.formatter -> perktype -> Ppx_deriving_runtime.unit
val show_perktype : perktype -> Ppx_deriving_runtime.string
val pp_perkvardesc : Ppx_deriving_runtime.Format.formatter -> perkdecl -> Ppx_deriving_runtime.unit
val show_perkvardesc : perkvardesc -> Ppx_deriving_runtime.string
val pp_perkdecl : Ppx_deriving_runtime.Format.formatter -> perkdecl -> Ppx_deriving_runtime.unit
val show_perkdecl : perkdecl -> Ppx_deriving_runtime.string
val pp_binop : Ppx_deriving_runtime.Format.formatter -> binop -> Ppx_deriving_runtime.unit
val show_binop : binop -> Ppx_deriving_runtime.string
val pp_preunop : Ppx_deriving_runtime.Format.formatter -> preunop -> Ppx_deriving_runtime.unit
val show_preunop : preunop -> Ppx_deriving_runtime.string
val pp_postunop : Ppx_deriving_runtime.Format.formatter -> postunop -> Ppx_deriving_runtime.unit
val show_postunop : postunop -> Ppx_deriving_runtime.string
val pp_perkdef : Ppx_deriving_runtime.Format.formatter -> perkdef -> Ppx_deriving_runtime.unit
val show_perkdef : perkdef -> Ppx_deriving_runtime.string
val pp_perkfundef : Ppx_deriving_runtime.Format.formatter -> perkfundef -> Ppx_deriving_runtime.unit
val show_perkfundef : perkfundef -> Ppx_deriving_runtime.string
val pp_expr_t : Ppx_deriving_runtime.Format.formatter -> expr_t -> Ppx_deriving_runtime.unit
val show_expr_t : expr_t -> Ppx_deriving_runtime.string
val pp_command_t : Ppx_deriving_runtime.Format.formatter -> command_t -> Ppx_deriving_runtime.unit
val show_command_t : command_t -> Ppx_deriving_runtime.string
val pp_topleveldef_t : Ppx_deriving_runtime.Format.formatter -> topleveldef_t -> Ppx_deriving_runtime.unit
val show_topleveldef_t : topleveldef_t -> Ppx_deriving_runtime.string
val pp_deforfun_t : Ppx_deriving_runtime.Format.formatter -> deforfun_t -> Ppx_deriving_runtime.unit
val show_deforfun_t : deforfun_t -> Ppx_deriving_runtime.string
val pp_declorfun_t : Ppx_deriving_runtime.Format.formatter -> declorfun_t -> Ppx_deriving_runtime.unit
val show_declorfun_t : declorfun_t -> Ppx_deriving_runtime.string
val pp_expr_a : Ppx_deriving_runtime.Format.formatter -> expr_a -> Ppx_deriving_runtime.unit
val show_expr_a : expr_a -> Ppx_deriving_runtime.string
val pp_command_a : Ppx_deriving_runtime.Format.formatter -> command_a -> Ppx_deriving_runtime.unit
val show_command_a : command_a -> Ppx_deriving_runtime.string
val pp_topleveldef_a : Ppx_deriving_runtime.Format.formatter -> topleveldef_a -> Ppx_deriving_runtime.unit
val show_topleveldef_a : topleveldef_a -> Ppx_deriving_runtime.string
val pp_deforfun_a : Ppx_deriving_runtime.Format.formatter -> deforfun_a -> Ppx_deriving_runtime.unit
val show_deforfun_a : deforfun_a -> Ppx_deriving_runtime.string
val pp_declorfun_a : Ppx_deriving_runtime.Format.formatter -> declorfun_a -> Ppx_deriving_runtime.unit
val show_declorfun_a : declorfun_a -> Ppx_deriving_runtime.string
val equal_perktype_partial : perktype_partial -> perktype_partial -> Ppx_deriving_runtime.bool
val equal_perktype : perktype -> perktype -> Ppx_deriving_runtime.bool
val equal_perkvardesc : perkvardesc -> perkdecl -> Ppx_deriving_runtime.bool
val equal_perkdecl : perkdecl -> perkdecl -> Ppx_deriving_runtime.bool
val equal_binop : binop -> binop -> Ppx_deriving_runtime.bool
val equal_preunop : preunop -> preunop -> Ppx_deriving_runtime.bool
val equal_postunop : postunop -> postunop -> Ppx_deriving_runtime.bool
val equal_perkdef : perkdef -> perkdef -> Ppx_deriving_runtime.bool
val equal_perkfundef : perkfundef -> perkfundef -> Ppx_deriving_runtime.bool
val equal_expr_t : expr_t -> expr_t -> Ppx_deriving_runtime.bool
val equal_command_t : command_t -> command_t -> Ppx_deriving_runtime.bool
val equal_topleveldef_t : topleveldef_t -> topleveldef_t -> Ppx_deriving_runtime.bool
val equal_deforfun_t : deforfun_t -> deforfun_t -> Ppx_deriving_runtime.bool
val equal_declorfun_t : declorfun_t -> declorfun_t -> Ppx_deriving_runtime.bool
val equal_expr_a : expr_a -> expr_a -> Ppx_deriving_runtime.bool
val equal_command_a : command_a -> command_a -> Ppx_deriving_runtime.bool
val equal_topleveldef_a : topleveldef_a -> topleveldef_a -> Ppx_deriving_runtime.bool
val equal_deforfun_a : deforfun_a -> deforfun_a -> Ppx_deriving_runtime.bool
val equal_declorfun_a : declorfun_a -> declorfun_a -> Ppx_deriving_runtime.bool
val all_vars : (perkident * perktype) list Stdlib.ref
val filter_var_table : unit -> unit