Module LisUtils

module LisUtils: sig .. end
Utilities for Lilis such as parsing and verification on L-systems.

module SMap: Map.S  with type key = string

Parsing


exception OptionalArgument of (string * string)
OptionalArgument (symbol, arg)
exception ParseError of (int * int * string)
ParseError (line, col, token)
val string_of_ParseError : int * int * string -> string
Output "Parse error on line %line, colunm %col, token %token"
val from_channel : Pervasives.in_channel -> (string * string Calc.t list) Lilis.lsystem list
Raises ParseError on parse errors.
val from_string : string -> (string * string Calc.t list) Lilis.lsystem list
Raises ParseError on parse errors.
val lsystem_from_string : string -> (string * string Calc.t list) Lilis.lsystem
Parse only one lsystem.
Raises ParseError on parse errors.

Printing


val to_string : (string * string Calc.t list) Lilis.lsystem -> string
val fprint : Format.formatter -> (string * string Calc.t list) Lilis.lsystem -> unit
val fprint_rule : Format.formatter -> (string * string Calc.t list) Lilis.rule -> unit

Verifications


exception ArityError of (string * int * int)
ArityError ( symbol, defined_arity, used_arity )
exception VarDefError of (string * string)
VarDefError ( symbol, undefined_variable )
exception TokenDefError of string
TokenDefError (symbol)
val check_stream : int SMap.t -> (string * 'a list) list -> unit
Check a stream against an environment. This environment is a mapping name -> arity.
Raises ArityError, VarDefError, TokenDefError
val check_rule : int SMap.t ->
?arit_env:Calc.Env.t -> (string * string Calc.t list) Lilis.rule -> unit
As check_stream for a rule. Need also an arithmetic environment, will use Calc.Env.usual if none is provided.
Raises ArityError, VarDefError, TokenDefError
val replace_in_post_rules : (string * ('a * int)) list ->
(string * 'b list) Lilis.lsystem -> ('a * 'b list) Lilis.lsystem