package acgtk

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file errors.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
open UtilsLib.Error

module Lexing_o = Lexing

module Syntax_l =
  struct
    type t =
      | UnexpectedEOI
      | TrailingChars
      | SyntaxError of int
      | Other

    let kind = "Script syntax"

    let pp fmt err =
      match err with
      | UnexpectedEOI -> Format.fprintf fmt "Unexpected@ end@ of@ input"
      | TrailingChars -> Format.fprintf fmt "Trailing@ chars"
      | SyntaxError s -> Format.fprintf fmt "%a" UtilsLib.Error.pp_text (String.trim (ParserMessages.message s))
      | Other -> Format.fprintf fmt "Unknown@ error"
  end

module SyntaxErrors = ErrorManager(Syntax_l)

module Lexing_l =
  struct
    type t =
      | Unclosed of string
      | UnterminatedComment
      | UnstartedComment
      | BadChar of string
      | Malformed

    let kind = "Script lexing"

    let pp fmt err =
      match err with
      | Unclosed tok -> Format.fprintf fmt "Unclosed@ \'%s\'" tok
      | UnterminatedComment -> Format.fprintf fmt "Unterminated@ comment"
      | UnstartedComment -> Format.fprintf fmt "Unstarted@ comment"
      | BadChar tok -> Format.fprintf fmt "Bad@ character@ \'%s\'" tok
      | Malformed -> Format.fprintf fmt "Malformed@ UTF-8@ input"
  end

module LexingErrors = ErrorManager(Lexing_l)

module Type_l =
  struct
    type t =
      | Variable of string * string * string * string * string
      | Literal of string * string * string * string
      | DefaultValue of string * string * string * string
      | Other

    let kind = "Script type"

    let pp fmt err =
      match err with
      | Variable (f, p, v, t_exp, t_act) ->
        Format.fprintf fmt "Expecting@ %s@ for@ paramater@ \"%s\"@ of@ function@ \"%s\",@ but@ got@ %s.@ The@ type@ of@ variable@ \"%s\"@ was@ inferred@ to@ %s" t_exp p f t_act v t_act
      | Literal (f, p, t_exp, t_act) -> Format.fprintf fmt "Expecting@ %s@ for@ parameter@ \"%s\"@ of@ function@ \"%s\",@ but@ got@ %s" t_exp p f t_act
      | DefaultValue (f, p, t_exp, t_act) -> Format.fprintf fmt "Expecting@ %s@ for@ the@ default@ value@ of@ parameter@ \"%s\"@ of@ function@ \"%s\",@ but@ got@ %s.@ The@ type@ of@ variable@ \"%s\"@ was@ inferred@ to@ %s" t_exp p f t_act p t_exp
      | Other -> Format.fprintf fmt "Unknown@ error"
  end

module TypeErrors = ErrorManager(Type_l)

module Script_l =
  struct
    type t =
      | NoSignatureType of string
      | NoSignatureTerm
      | WrongSignature of string * string
      | OnlyLexicon of string
      | ArgumentMissing of string * string
      | DifferentSig of string * (AcgData.Signature.Data_Signature.t * AcgData.Signature.Data_Signature.t) option
      | AlreadyExistingFun of string
      | UnusedVariable of string
      | UnknownFunction of string
      | UnknownParameter of string * string
      | ParameterRepeated of string * string
      | TooMuchArgs of string
      | NoLastValue
      | InvalidSpecialFuncCall of string
      | MissingFuncTermList of string
      | TermListNotAllowed of string
      | EmptyPipe of string
      | EmptyHelp of string
      | Other

    let kind = "Script"

    let pp fmt err =
      match err with
      | NoSignatureType t -> Format.fprintf fmt "No@ signature@ to@ interpret@ type@ \"%s\"" t
      | NoSignatureTerm -> Format.fprintf fmt "No@ signature@ to@ interpret@ the@ resulting@ term"
      | WrongSignature (sig1, sig2) -> Format.fprintf fmt "This@ term@ is@ in@ the@ signature@ \"%s\"@ but@ is@ used@ with@ an@ other@ signature@ (\"%s\")" sig1 sig2
      | OnlyLexicon s -> Format.fprintf fmt "This@ function@ only@ accepts@ a@ lexicon.@ \"%s\"@ is@ a@ signature" s
      | ArgumentMissing (a, f) -> Format.fprintf fmt "No@ value@ given@ for@ parameter@ \"%s\"@ of@ function@ \"%s\"" a f
      | DifferentSig (v, Some (sig1, sig2)) -> Format.fprintf fmt "Different@ signatures@ used@ for@ the@ type@ variable@ \"%s\"@ (\"%s\"@ and@ \"%s\")" v (fst (AcgData.Signature.Data_Signature.name sig1)) (fst (AcgData.Signature.Data_Signature.name sig2))
      | DifferentSig (v, None) -> Format.fprintf fmt "Different@ signatures@ used@ for@ the@ type@ variable@ \"%s\"" v
      | AlreadyExistingFun f -> Format.fprintf fmt "The@ function@ \"%s\"@ already@ exists@ in@ the@ environment" f
      | UnusedVariable v -> Format.fprintf fmt "Unused@ variable@ \"%s\"" v
      | UnknownFunction f -> Format.fprintf fmt "Unknown@ function@ \"%s\"" f
      | UnknownParameter (f, p) -> Format.fprintf fmt "Unknown@ parameter@ \"%s\"@ for@ the@ function@ \"%s\"" p f
      | ParameterRepeated (f, p) -> Format.fprintf fmt "Parameter@ \"%s\"@ of@ function@ \"%s\"@ given@ twice" p f
      | TooMuchArgs f -> Format.fprintf fmt "Too@ many@ arguments@ for@ function@ \"%s\"" f
      | NoLastValue -> Format.fprintf fmt "No@ last@ value@ in@ the@ current@ environment"
      | InvalidSpecialFuncCall f -> Format.fprintf fmt "The@ function@ \"%s\"@ can@ only@ be@ called@ alone@ in@ a@ command" f
      | MissingFuncTermList f -> Format.fprintf fmt "The@ function@ \"%s\"@ requires@ terms@ as@ input" f
      | TermListNotAllowed f -> Format.fprintf fmt "The@ function@ \"%s\"@ must@ be@ called@ without@ terms@ as@ input" f
      | EmptyPipe f -> Format.fprintf fmt "The@ pipe@ before@ the@ function@ \"%s\"@ is@ invalid,@ because@ the@ previous@ function@ does@ not@ output@ terms" f
      | EmptyHelp f_pattern -> Format.fprintf fmt "No@ functions@ starting@ with@ \"%s\"@ found" f_pattern
      | Other -> Format.fprintf fmt "Unknown@ error"
  end

module ScriptErrors = ErrorManager(Script_l)
OCaml

Innovation. Community. Security.