package abstrasy.interpreter;
import abstrasy.Interpreter;
import abstrasy.Node;
import abstrasy.Tools;
import java.util.Hashtable;
/**
* Abstrasy Interpreter
*
* Copyright : Copyright (c) 2006-2012, Luc Bruninx.
*
* Concédée sous licence EUPL, version 1.1 uniquement (la «Licence»).
*
* Vous ne pouvez utiliser la présente oeuvre que conformément à la Licence.
* Vous pouvez obtenir une copie de la Licence à l’adresse suivante:
*
* http://www.osor.eu/eupl
*
* Sauf obligation légale ou contractuelle écrite, le logiciel distribué sous
* la Licence est distribué "en l’état", SANS GARANTIES OU CONDITIONS QUELLES
* QU’ELLES SOIENT, expresses ou implicites.
*
* Consultez la Licence pour les autorisations et les restrictions
* linguistiques spécifiques relevant de la Licence.
*
*
* @author Luc Bruninx
* @version 1.0
*/
public class StdErrors {
private int err;
private String msg;
private Node msgExt = null;
private static Hashtable<Integer,StdErrors> _STD_ERRORS_DIC_ = new Hashtable<Integer,StdErrors>();
private StdErrors(int err, String msg) {
this.err = err;
this.msg = msg;
_STD_ERRORS_DIC_.put(err,this);
}
private StdErrors(int err, String msg, Node msgExt) {
this.err = err;
this.msg = msg;
this.msgExt = msgExt;
_STD_ERRORS_DIC_.put(err,this);
}
public static StdErrors getStdErrors(int err){
return _STD_ERRORS_DIC_.get(err);
}
public int getErr() {
return err;
}
public String getMsg() {
return msg;
}
public Node getMsgExt() {
return msgExt;
}
public static final StdErrors createTrace(Interpreter interThrd, Exception exception) {
int error = 0;
String message = exception.getMessage();
Node messageExt = null;
if (exception instanceof InterpreterException) {
error = ((InterpreterException) exception).getErrCode();
messageExt = ((InterpreterException) exception).getMessageExt();
}
return new StdErrors(error,
"From thread[" + interThrd.getName() + ":" + interThrd.getId() + "]...\n" + message, messageExt);
}
public static final StdErrors createTrace(Node fromExecNode, Exception exception) {
int error = 0;
String message = exception.getMessage();
Node messageExt = null;
if (exception instanceof InterpreterException) {
error = ((InterpreterException) exception).getErrCode();
messageExt = ((InterpreterException) exception).getMessageExt();
}
return new StdErrors(error,
Tools.replaceCSeq(fromExecNode.traceLineNumber(), "\n", "") + "Trace: " + fromExecNode.sourceLine() + (message.startsWith("@") ? " ...\n" +
message: fromExecNode.traceLineNumber() + message), messageExt);
}
public static final StdErrors extend(StdErrors stdError, String appendMsg) {
return new StdErrors(stdError.err, stdError.msg + " (" + appendMsg + ")");
}
/*
* (try{...} catch{...}) ne peut pas capturer les exeptions dont le code est négatif...
*/
public static final StdErrors Breaking_exception = new StdErrors(-1, "Breaking execution");
/*
* exceptions capturables...
*/
public static final StdErrors Unknown_error = new StdErrors(0, "Unknown error");
public static final StdErrors Syntax_error = new StdErrors(1, "Syntax error");
public static final StdErrors Stack_overflow = new StdErrors(2, "Stack overflow");
public static final StdErrors Complete_loop_misplaced = new StdErrors(10, "complete-loop misplaced");
public static final StdErrors Break_loop_misplaced = new StdErrors(11, "break-loop misplaced");
public static final StdErrors Skip_loop_misplaced = new StdErrors(12, "skip-loop misplaced");
public static final StdErrors More_than_one_result = new StdErrors(15, "More than one result");
public static final StdErrors Illegal_tail_call = new StdErrors(20, "Illegal tail-call");
public static final StdErrors Illegal_arguments_use_in_tail_call = new StdErrors(21, "Illegal arguments use in tail-call");
public static final StdErrors Tail_call_misplaced = new StdErrors(22, "Tail-call misplaced");
public static final StdErrors Return_misplaced = new StdErrors(25, "return misplaced");
public static final StdErrors Stack_less_error = new StdErrors(26, "Stack less error");
public static final StdErrors Return_register_error = new StdErrors(27, "Return register error");
public static final StdErrors Restart_error = new StdErrors(28, "Restart error");
public static final StdErrors Restart_misplaced = new StdErrors(29, "restart misplaced");
public static final StdErrors Retry_error = new StdErrors(30, "Retry error");
public static final StdErrors Retry_misplaced = new StdErrors(31, "retry misplaced");
public static final StdErrors Abort_error = new StdErrors(32, "Abort error");
public static final StdErrors Abort_misplaced = new StdErrors(33, "abort misplaced");
public static final StdErrors Delegate_misplaced = new StdErrors(34, "delegate misplaced");
public static final StdErrors Delegate_return_register_error = new StdErrors(35, "Delegate return register error");
public static final StdErrors Continue_misplaced = new StdErrors(26, "continue misplaced");
public static final StdErrors Duplicate_parameters = new StdErrors(102, "Duplicate parameters");
public static final StdErrors Cannot_estimate_parameter = new StdErrors(103, "Can not estimate parameter");
public static final StdErrors Invalid_parameter = new StdErrors(104, "Invalid parameter");
public static final StdErrors Argument_count_mismatch = new StdErrors(105, "Argument-count mismatch");
public static final StdErrors Argument_type_mismatch = new StdErrors(106, "Argument-type mismatch");
public static final StdErrors Argument_quote_mismatch = new StdErrors(107, "Argument-quote mismatch");
public static final StdErrors Perform_arguments_mismatch = new StdErrors(108, "Perform arguments mismatch");
public static final StdErrors Symbol_not_defined = new StdErrors(200, "Symbol not defined");
public static final StdErrors Illegal_access_to_private_slot = new StdErrors(201, "Illegal access to private slot");
public static final StdErrors Object_required = new StdErrors(202, "Object required");
public static final StdErrors Immutable_symbol_already_defined = new StdErrors(203, "Immutable or immuable symbol already defined");
public static final StdErrors Immutable_symbol_required = new StdErrors(204, "Immutable symbol required");
public static final StdErrors Symbol_required = new StdErrors(205, "Symbol required");
public static final StdErrors Illegal_access_to_final_value = new StdErrors(206, "Illegal access to final value");
public static final StdErrors Use_Once_symbol_unreaded = new StdErrors(207, "Use-Once symbol unreaded");
public static final StdErrors Local_symbol_required = new StdErrors(208, "Local symbol required");
public static final StdErrors Illegal_access_to_register = new StdErrors(209, "Illegal access to register");
public static final StdErrors Symbol_already_exists = new StdErrors(210, "Symbol already exists");
public static final StdErrors Value_required = new StdErrors(211, "Value required");
public static final StdErrors Illegal_access_to_matching_symbol = new StdErrors(212, "Illegal access to matching symbol");
public static final StdErrors Type_mismatch = new StdErrors(213, "Type mismatch");
public static final StdErrors Delegable_object_required = new StdErrors(214, "Delegable object required");
public static final StdErrors Division_by_zero = new StdErrors(300, "Division by zero");
public static final StdErrors Arithmetic_error = new StdErrors(301, "Arithmetic error");
public static final StdErrors Regex_error = new StdErrors(302, "Regex error");
public static final StdErrors List_size_mismatch = new StdErrors(400, "List size mismatch");
public static final StdErrors Not_found = new StdErrors(401, "Not Found");
public static final StdErrors Out_of_range = new StdErrors(402, "Out of range");
public static final StdErrors Already_used = new StdErrors(403, "Already use");
public static final StdErrors Empty_list = new StdErrors(404, "Empty list");
public static final StdErrors Empty_string = new StdErrors(405, "Empty string");
public static final StdErrors Invalid_pair = new StdErrors(450, "Invalid pair");
public static final StdErrors Thread_error = new StdErrors(500, "Actor Error");
public static final StdErrors Illegal_operation_in_mutex_section = new StdErrors(501, "Illegal operation in mutex section");
public static final StdErrors An_actor_can_not_resume_himself = new StdErrors(502, "An actor can not resume himself");
public static final StdErrors Actor_not_found = new StdErrors(503, "Actor not found");
public static final StdErrors An_actor_can_not_kill_himself = new StdErrors(504, "An actor can not kill himself");
public static final StdErrors An_actor_can_not_kill_supervisor = new StdErrors(505, "An actor can not kill supervisor");
public static final StdErrors Illegal_operation_in_critical_section = new StdErrors(506, "Illegal operation in critical section");
public static final StdErrors Critical_section_locking_fail = new StdErrors(507, "Critical section locking fail");
public static final StdErrors Deadlock_error = new StdErrors(508, "Deadlock Error");
public static final StdErrors Illegal_operation_outside_pending_section = new StdErrors(509, "Illegal operation outside pending section");
public static final StdErrors Concurrent_access_to_locked_data = new StdErrors(510, "Concurrent access to locked data");
public static final StdErrors Concurrent_access_rights_mismatch = new StdErrors(511, "Concurrent access rights mismatch");
public static final StdErrors Exclusive_lock_needed = new StdErrors(511, "Exclusive lock needed");
public static final StdErrors Object_not_serializable = new StdErrors(1000, "Object not serializable");
public static final StdErrors Object_not_clonable = new StdErrors(1001, "Object not clonable");
public static final StdErrors Object_not_comparable = new StdErrors(1002, "Object not comparable");
public static final StdErrors Object_not_equalisable = new StdErrors(1003, "Object not equalisable");
public static final StdErrors Cannot_be_inherited = new StdErrors(1004, "Can not be inherited");
public static final StdErrors Cannot_parse_class = new StdErrors(1005, "Can not parse class");
public static final StdErrors Extends_Derived_Object = new StdErrors(1006, "Extends derived object");
public static final StdErrors Transform_Parent_Object = new StdErrors(1007, "Transform parent object");
public static final StdErrors Abstract_misplaced = new StdErrors(1008, "abstract misplaced");
public static final StdErrors Void_return_results = new StdErrors(2000, "Void return results");
public static final StdErrors Circulare_reference = new StdErrors(3000, "Circulare reference");
public static final StdErrors Function_required = new StdErrors(4000, "Function required");
public static final StdErrors Memoize_required = new StdErrors(4010, "Memoize required");
public static final StdErrors Memoizable_argument_required = new StdErrors(4011, "Memoizable argument required");
public static final StdErrors Internal_error = new StdErrors(10000, "Internal error");
public static final StdErrors External_error = new StdErrors(10001, "External error");
public static final StdErrors Library_error = new StdErrors(20000, "Library error");
public static final StdErrors Library_not_found = new StdErrors(20001, "Library not found");
public static final StdErrors Module_error = new StdErrors(21000, "Module error");
public static final StdErrors Cannot_import_module = new StdErrors(21001, "cannot import module");
public static final StdErrors Module_not_defined = new StdErrors(21002, "Module not defined");
public static final StdErrors Module_already_defined = new StdErrors(21003, "Module already defined");
public static final StdErrors Resource_error = new StdErrors(22000, "Resource error");
public static final StdErrors Resource_not_found = new StdErrors(22001, "Resource not found");
public static final StdErrors Key_not_found = new StdErrors(30000, "Key not found");
public static final StdErrors Associative_key_already_used = new StdErrors(30001, "Associative key already used");
public static final StdErrors Require_assertion = new StdErrors(40000, "Require assertion");
public static final StdErrors Invariants_not_defined = new StdErrors(40100, "Invariants not defined");
public static final StdErrors Require_contract = new StdErrors(40101, "Require contract");
public static final StdErrors Assertion = new StdErrors(40200, "Assertion exception");
public static final StdErrors Timed_expired_exception = new StdErrors(40201, "Time expired exception");
public static final StdErrors Raise_exception = new StdErrors(40203, "Raise exception");
public static final StdErrors Quote_encoded_error = new StdErrors(50000, "Quote-encoded error");
public static final StdErrors Invalid_symbol = new StdErrors(50001, "Invalid symbol");
public static final StdErrors Illegal_unquoted_code = new StdErrors(50002, "Illegal unquoted code");
public static final StdErrors Operating_symbol_error = new StdErrors(50003, "Operating symbol error");
}