|
|
|
(*
|
|
|
|
* Copyright (c) 2019-present, Facebook, Inc.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*)
|
|
|
|
|
|
|
|
open! IStd
|
|
|
|
|
|
|
|
type property_name = string [@@deriving compare, hash, sexp]
|
|
|
|
|
|
|
|
type register_name = string
|
|
|
|
|
|
|
|
type constant = Exp.t
|
|
|
|
|
|
|
|
type value_pattern =
|
|
|
|
| Ignore
|
|
|
|
| SaveInRegister of register_name
|
|
|
|
| EqualToRegister of register_name
|
|
|
|
| EqualToConstant of constant
|
|
|
|
|
|
|
|
(** a regular expression *)
|
|
|
|
type procedure_name_pattern = string
|
|
|
|
|
|
|
|
type label =
|
|
|
|
{ return: value_pattern
|
|
|
|
; procedure_name: procedure_name_pattern
|
|
|
|
; arguments: value_pattern list option }
|
|
|
|
|
|
|
|
type vertex = string [@@deriving compare, hash, sexp]
|
|
|
|
|
|
|
|
type transition = {source: vertex; target: vertex; label: label}
|
|
|
|
|
|
|
|
type t =
|
|
|
|
{name: property_name; message: string option; prefixes: string list; transitions: transition list}
|