package p4spectec

  1. Overview
  2. Docs
P4-SpecTec: A mechanization toolchain for the P4 Programming Language

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.2.tar.gz
md5=1a3bc0a385fe1ecf403c019f49aa6de6
sha512=5d20b5821f33e2a3a5419b208606f27c01511994c2b3b1e1cdf4c077056dfd0aa81682af0720e1060ee2bfb0341918fcc4c53159820205a2bc32b725e5c1a714

doc/p4spectec.pass/Pass/Structure/Ol/Ast/index.html

Module Ol.Ast

include module type of struct include Lang.Sl end
type num = Lang.Il.num
val num_to_yojson : num -> Yojson.Safe.t
type text = Lang.Il.text
val text_to_yojson : text -> Yojson.Safe.t
type id = Lang.Il.id
val id_to_yojson : id -> Yojson.Safe.t
type id' = Lang.Il.id'
type atom = Lang.Il.atom
val atom_to_yojson : atom -> Yojson.Safe.t
type atom' = Lang.Il.atom'
type mixop = Lang.Il.mixop
val mixop_to_yojson : mixop -> Yojson.Safe.t
type iter = Lang.Il.iter
val iter_to_yojson : iter -> Yojson.Safe.t
type var = Lang.Il.var
val var_to_yojson : var -> Yojson.Safe.t
type typ = Lang.Il.typ
val typ_to_yojson : typ -> Yojson.Safe.t
type typ' = Lang.Il.typ'
type nottyp = Lang.Il.nottyp
val nottyp_to_yojson : nottyp -> Yojson.Safe.t
type nottyp' = Lang.Il.nottyp'
type deftyp = Lang.Il.deftyp
val deftyp_to_yojson : deftyp -> Yojson.Safe.t
type deftyp' = Lang.Il.deftyp'
type typfield = Lang.Il.typfield
val typfield_to_yojson : typfield -> Yojson.Safe.t
type typcase = Lang.Il.typcase
val typcase_to_yojson : typcase -> Yojson.Safe.t
type vid = Lang.Il.vid
type vnote = Lang.Il.vnote
type value = Lang.Il.value
val value_to_yojson : value -> Yojson.Safe.t
type value' = Lang.Il.value'
type valuefield = Lang.Il.valuefield
val valuefield_to_yojson : valuefield -> Yojson.Safe.t
type valuecase = Lang.Il.valuecase
val valuecase_to_yojson : valuecase -> Yojson.Safe.t
type numop = Lang.Il.numop
val numop_to_yojson : numop -> Yojson.Safe.t
type unop = Lang.Il.unop
val unop_to_yojson : unop -> Yojson.Safe.t
type binop = Lang.Il.binop
val binop_to_yojson : binop -> Yojson.Safe.t
type cmpop = Lang.Il.cmpop
val cmpop_to_yojson : cmpop -> Yojson.Safe.t
type optyp = Lang.Il.optyp
val optyp_to_yojson : optyp -> Yojson.Safe.t
type exp = Lang.Il.exp
val exp_to_yojson : exp -> Yojson.Safe.t
type exp' = Lang.Il.exp'
type notexp = Lang.Il.notexp
val notexp_to_yojson : notexp -> Yojson.Safe.t
type iterexp = Lang.Il.iterexp
val iterexp_to_yojson : iterexp -> Yojson.Safe.t
type pattern = Lang.Il.pattern
val pattern_to_yojson : pattern -> Yojson.Safe.t
type path = Lang.Il.path
val path_to_yojson : path -> Yojson.Safe.t
type path' = Lang.Il.path'
type tparam = Lang.Il.tparam
val tparam_to_yojson : tparam -> Yojson.Safe.t
type tparam' = Lang.Il.tparam'
and param' =
  1. | ExpP of typ * exp
  2. | DefP of id * tparam list * param list * typ
val param_to_yojson : param -> Yojson.Safe.t
val param'_to_yojson : param' -> Yojson.Safe.t
type targ = Lang.Il.targ
val targ_to_yojson : targ -> Yojson.Safe.t
type targ' = Lang.Il.targ'
type arg = Lang.Il.arg
val arg_to_yojson : arg -> Yojson.Safe.t
type arg' = Lang.Il.arg'
and dangle = bool
and holdcase =
  1. | BothH of (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list
  2. | HoldH of (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list * dangle
  3. | NotHoldH of (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list * dangle
and iid = int
and inote = {
  1. iid : iid;
}
and iterinstr = Lang.Il.iterprem
and hint = Lang.El.hint
and rel_signature = nottyp * Lang.Hints.Input.t
val arg'_to_yojson : arg' -> Yojson.Safe.t
val dangle_to_yojson : dangle -> Yojson.Safe.t
val holdcase_to_yojson : holdcase -> Yojson.Safe.t
val case_to_yojson : (Lang__Sl__.Ast.guard * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list) -> Yojson.Safe.t
val case_of_yojson : Yojson.Safe.t -> (Lang__Sl__.Ast.guard * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list) Ppx_deriving_yojson_runtime.error_or
val guard_to_yojson : Lang__Sl__.Ast.guard -> Yojson.Safe.t
val guard_of_yojson : Yojson.Safe.t -> Lang__Sl__.Ast.guard Ppx_deriving_yojson_runtime.error_or
val iid_to_yojson : iid -> Yojson.Safe.t
val inote_to_yojson : inote -> Yojson.Safe.t
val instr_to_yojson : (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase -> Yojson.Safe.t
val instr_of_yojson : Yojson.Safe.t -> (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase Ppx_deriving_yojson_runtime.error_or
val instr'_to_yojson : Lang__Sl__.Ast.instr' -> Yojson.Safe.t
val instr'_of_yojson : Yojson.Safe.t -> Lang__Sl__.Ast.instr' Ppx_deriving_yojson_runtime.error_or
val block_to_yojson : (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list -> Yojson.Safe.t
val block_of_yojson : Yojson.Safe.t -> (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list Ppx_deriving_yojson_runtime.error_or
val elseblock_to_yojson : (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list -> Yojson.Safe.t
val elseblock_of_yojson : Yojson.Safe.t -> (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list Ppx_deriving_yojson_runtime.error_or
val iterinstr_to_yojson : iterinstr -> Yojson.Safe.t
val hint_to_yojson : hint -> Yojson.Safe.t
val rel_signature_to_yojson : rel_signature -> Yojson.Safe.t
type externrel = id * rel_signature * exp list * hint list
val externrel_to_yojson : externrel -> Yojson.Safe.t
type rel = id * rel_signature * exp list * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list option * hint list
val rel_to_yojson : rel -> Yojson.Safe.t
type externfunc = id * tparam list * param list * typ * hint list
val externfunc_to_yojson : externfunc -> Yojson.Safe.t
type builtinfunc = id * tparam list * param list * typ * hint list
val builtinfunc_to_yojson : builtinfunc -> Yojson.Safe.t
type tablerow = exp list * exp * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list
val tablerow_to_yojson : tablerow -> Yojson.Safe.t
type tablefunc = id * param list * typ * tablerow list * hint list
val tablefunc_to_yojson : tablefunc -> Yojson.Safe.t
type definedfunc = id * tparam list * param list * typ * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list * (Lang__Sl__.Ast.instr', inote) Util.Source.note_phrase list option * hint list
val definedfunc_to_yojson : definedfunc -> Yojson.Safe.t
and def' =
  1. | ExternTypD of id * hint list
  2. | TypD of id * tparam list * deftyp * hint list
  3. | VarD of id * typ * hint list
  4. | ExternRelD of externrel
  5. | RelD of rel
  6. | ExternDecD of externfunc
  7. | BuiltinDecD of builtinfunc
  8. | TableDecD of tablefunc
  9. | FuncDecD of definedfunc
val def_to_yojson : def -> Yojson.Safe.t
val def'_to_yojson : def' -> Yojson.Safe.t
type spec = def list
val spec_to_yojson : spec -> Yojson.Safe.t
module Eq = Lang.Sl.Eq
module Free = Lang.Sl.Free
module Print = Lang.Sl.Print
type case = guard * block
and guard =
  1. | BoolG of bool
  2. | CmpG of cmpop * optyp * exp
  3. | SubG of typ
  4. | MatchG of pattern
  5. | MemG of exp
and instr' =
  1. | IfI of exp * iterexp list * block
  2. | HoldI of id * notexp * iterexp list * block * block
  3. | CaseI of exp * case list * bool
  4. | GroupI of id * rel_signature * exp list * block
  5. | LetI of exp * exp * iterinstr list * block
  6. | RuleI of id * notexp * Lang.Hints.Input.t * iterinstr list * block
  7. | ResultI of rel_signature * exp list
  8. | ReturnI of exp
  9. | DebugI of exp * instr
and block = instr list
and elseblock = block