package p4spectec
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
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/src/dynamic_runner/signature.ml.html
Source file signature.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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134open Domain.Lib open Lang module Typ = Type.Typ open Util.Source (* Module signatures for interpreter-extern interaction *) type mode = AL_mode | SL_mode | PL_mode | Empty_mode type spec = AL of Al.spec | SL of Sl.spec | PL of Pl.spec | Empty (* Result types *) type rel_result = Pass of Value.t list | Fail of region * string type func_result = Pass of Value.t | Fail of region * string type parse_result = Pass of Value.t | Fail of [ `Syntax of region * string ] type program_result = | Pass of Value.t list | Fail of [ `Syntax of region * string | `Runtime of region * string ] type stf_result = | Pass | Fail of [ `Syntax of region * string | `Runtime of region * string ] (* Cache management *) module type CACHE = sig val cache_on : unit -> unit val cache_off : unit -> unit end (* Interface for the interaction between SpecTec and the defined language *) module type INTERFACE = sig (* Program parsing, into IL value *) val parse_program : string list -> string list -> parse_result val parse_string : string -> string -> parse_result (* Program unparsing *) val unparse_program : Value.t -> string (* Builtins *) val call_builtin : (Value.t -> unit) -> Id.t -> Typ.t list -> Value.t list -> Value.t (* State management *) val checkpoint : unit -> int val seff : int -> int -> bool (* Initialization *) val init : spec -> unit end (* Interface for the interaction between SpecTec and external code *) module type EXTERN = sig module Cache : CACHE (* Extern relation and meta-function evaluation *) val eval_extern_rel : string -> Value.t list -> rel_result val eval_extern_func : string -> Typ.t list -> Value.t list -> func_result (* State management *) val checkpoint : unit -> int val seff : int -> int -> bool val clear : unit -> unit (* Mode initialization for interp-extern knot *) val init_mode : mode -> unit end (* SpecTec interperter(s) *) module type INTERP = sig module Cache : CACHE (* Relation and meta-function evaluation *) val eval_program : string -> string list -> string -> program_result val eval_rel : string -> Value.t list -> rel_result val eval_func : string -> Typ.t list -> Value.t list -> func_result (* Clear the state *) val clear : unit -> unit end module type INTERP_AL = sig include INTERP (* Initialization *) val init : cache:bool -> det:bool -> guard:bool -> Al.spec -> unit end module type INTERP_SL = sig include INTERP (* Initialization *) val init : cache:bool -> det:bool -> guard:bool -> Sl.spec -> unit end module type INTERP_PL = sig include INTERP (* Initialization *) val init : cache:bool -> det:bool -> guard:bool -> Pl.spec -> unit end (* Runner for SpecTec, which glues together the interface, the extern, and the interpreter *) module type RUNNER = sig module Cache : CACHE module Interface : INTERFACE module Interp : INTERP (* Initialization *) val init : ?cache:bool -> ?det:bool -> ?guard:bool -> spec -> unit (* Clear the state *) val clear : unit -> unit end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>