let handleSemanticError = function
(0,_,r,_,_,_) ->
prerr_endline
("%% Semantic error");
prerr_endline
("%% Sem.Err(0): undefined role "^r)
| (1,f,r,_,_,c) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(1): "^f^" is not a function")
| (2,s,r,_,_,c) ->
(match s with
"-1" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(2a): invalid number of arguments")
| _ ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c^", Arg "^s);
prerr_endline
("%% Sem.Err(2b): type mismatch"))
| (4,_,r,tr,_,_) ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(4): missing event")
| (5,n,r,tr,_,c) ->
(match n with
"1i" ->
prerr_endline
("%% Semantic error: Role "^r^", Init state");
prerr_endline
("%% Sem.Err(5.1i): type mismatch in assignment")
| "1c" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(5.1c): type mismatch in cons() arguments")
| "1t" ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(5.1t): type mismatch in cons() arguments")
| "1" ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(5.1): type mismatch in cons() arguments")
| "2i" ->
prerr_endline
("%% Semantic error: Role "^r^", Init state");
prerr_endline
("%% Sem.Err(5.2i): invalid number of parameters for function, list or set")
| "2c" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(5.2c): invalid number of parameters for function, list or set")
| "2t" ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(5.2t): invalid number of parameters for function, list or set")
| "2" ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(5.2): invalid number of parameters for function, list or set")
| "3c" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(5.3c): second argument in cons() should be of type list or set")
| "3t" ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(5.3t): second argument in cons() should be of type list or set")
| "3" ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(5.3): second argument in cons() should be of type list or set")
| "4i" ->
prerr_endline
("%% Semantic error: Role "^r^", Init state");
prerr_endline
("%% Sem.Err(5.4i): impossible to check compatibility of types")
| "4c" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(5.4c): impossible to check compatibility of types")
| "4t" ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(5.4t): impossible to check compatibility of types")
| "4" ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(5.4): impossible to check compatibility of types in cons()")
| "5c" ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(5.5c): type mismatch in cons()")
| "5t" ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(5.5t): type mismatch in cons()")
| "5" ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(5.5): type mismatch in cons()")
| x ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err("^x^"): unknown error"))
| (10,_,r,tr,_,_) ->
prerr_endline
("%% Semantic error: Role "^r^", Transition "^tr);
prerr_endline
("%% Sem.Err(10): \"start\" is not used with a channel")
| (11,v,"","","","") ->
prerr_endline
("%% Semantic error: LTL goal");
prerr_endline
("%% Sem.Err(11g): undeclared variable "^v)
| (11,v,r,"","","") ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(11a): undeclared variable "^v)
| (11,v,r,"","",c) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c^
": Sem.Err(11b): undeclared variable "^v)
| (11,v,r,"",st,"") ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(11c): undeclared symbol "^v^" in "^st)
| (11,v,r,"",st,c) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(11d): undeclared symbol "^v^" in "^st)
| (11,v,r,tr,_,"") ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(11e): undeclared variable "^v)
| (11,v,r,tr,_,c) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^c);
prerr_endline
("%% Sem.Err(11f): undeclared variable "^v)
| (12,_,r,_,st,_) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^st);
prerr_endline
("%% Sem.Err(12): LHS of assignment is not a variable")
| (13,var,r,_,_,st) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^st);
prerr_endline
("%% Sem.Err(13): redeclared variable "^var)
| (14,f,r,_,_,st) ->
prerr_endline
("%% Semantic error: Role "^r^", Call "^st);
prerr_endline
("%% Sem.Err(14): invalid argument used with "^f)
| (15,_,r,_,_,_) ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(15): invalid number of parameters in composition section")
| (16,msg,line,_,_,_) ->
prerr_endline
("%% Semantic error: Line "^line);
prerr_endline
("%% Sem.Err(16): "^msg)
| (17,_,r,_,_,_) ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(17): player should be declared as agent in parameters")
| (18,v,r1,r2,_,_) ->
if r2 <> "" then
if r1 <> "" then
(prerr_endline
("%% Semantic error: Role "^r2);
prerr_endline
("%% Sem.Err(18a): type mismatch with declaration of "^v^" in role "^r1))
else
(prerr_endline
("%% Semantic error: Role "^r2);
prerr_endline
("%% Sem.Err(18b): type mismatch with global declaration of "^v))
else
if r1 <> "" then
(prerr_endline
("%% Semantic error: Role "^r1);
prerr_endline
("%% Sem.Err(18c): type mismatch with global declaration of "^v))
else
(prerr_endline
("%% Semantic error");
prerr_endline
("%% Sem.Err(18d): type mismatch between global declarations of "^v))
| (19,v,line,r,_,_) ->
prerr_endline
("%% Semantic error: Role "^r);
prerr_endline
("%% Sem.Err(19): Line "^line^": undeclared variable "^v^" in owns section")
| (20,msg,_,_,_,_) ->
prerr_endline
("%% Semantic error");
prerr_endline
("%% Sem.Err(20): "^msg)
| _ -> ()