sig
  type token =
      Parenl of (string * (string * int * int))
    | Parenr of (string * (string * int * int))
    | Scope of (string * (string * int * int))
    | Input of (string * (string * int * int))
    | Output of (string * (string * int * int))
    | Name of (string * (string * int * int))
    | Dangle of (string * (string * int * int))
    | Const of (string * (string * int * int))
    | Buf of (string * (string * int * int))
    | Not of (string * (string * int * int))
    | And of (string * (string * int * int))
    | Xor of (string * (string * int * int))
    | Or of (string * (string * int * int))
    | Concat of (string * (string * int * int))
    | Select of (string * (string * int * int))
    | Eq of (string * (string * int * int))
    | Lt of (string * (string * int * int))
    | Add of (string * (string * int * int))
    | Sub of (string * (string * int * int))
    | Mul of (string * (string * int * int))
    | Mux of (string * (string * int * int))
    | Ff of (string * (string * int * int))
    | Ffc of (string * (string * int * int))
    | Integer of (string * (string * int * int))
    | String of (string * (string * int * int))
    | EOF of (string * (string * int * int))
    | Lexer_error of (string * (string * int * int))
  val netlist :
    (Lexing.lexbuf -> Fnf_parser.token) -> Lexing.lexbuf -> Fnf_core.scope
end