Exemple #1
0
void hrc_dumper_dump_var_type(HrcDumper_ptr self, node_ptr node)
{
  const NuSMVEnv_ptr env = EnvObject_get_environment(ENV_OBJECT(self));
  const ErrorMgr_ptr errmgr =
    ERROR_MGR(NuSMVEnv_get_value(env, ENV_ERROR_MANAGER));

  int node_type = node_get_type(node);

  switch (node_type) {
  case BOOLEAN:
  case TWODOTS: /* range */
    _HRC_DUMP_NODE(node);
    break;

  case INTEGER:
    _HRC_DUMP_STR("integer");
    break;

  case REAL:
    _HRC_DUMP_STR("real");
    break;

  case SIGNED_WORD:
    _HRC_DUMP_STR("signed word[");
    _HRC_DUMP_NODE(car(node));
    _HRC_DUMP_STR("]");
    break;

  case UNSIGNED_WORD:
    _HRC_DUMP_STR("unsigned word[");
    _HRC_DUMP_NODE(car(node));
    _HRC_DUMP_STR("]");
    break;

  case SCALAR:
    hrc_dumper_dump_scalar_type(self, node);
    break;

  case WORDARRAY_TYPE:
    _HRC_DUMP_STR("array word[");
    _HRC_DUMP_NODE(car(node));
    _HRC_DUMP_STR("]");

    _HRC_DUMP_STR(" of ");
    
    /* recursively prints the array type */
    hrc_dumper_dump_var_type(self, cdr(node));
    break;

  case INTARRAY_TYPE:
    _HRC_DUMP_STR("array integer of ");
    
    /* recursively prints the array type */
    hrc_dumper_dump_var_type(self, car(node));
    break;

  case ARRAY_TYPE:
    _HRC_DUMP_STR("array ");

    /* Prints subrange of array n..m */
    _HRC_DUMP_NODE(car(node));

    _HRC_DUMP_STR(" of ");

    /* recursively prints the array type */
    hrc_dumper_dump_var_type(self, cdr(node));
    break;

  case NFUNCTION_TYPE:
    {
      node_ptr iter;
      boolean is_first = true;
      NODE_CONS_LIST_FOREACH(car(node), iter) {
        node_ptr elem = Node_conslist_get(iter);

        if (! is_first) {
          _HRC_DUMP_STR(" * ");
        }
        is_first = false;

        hrc_dumper_dump_var_type(self, elem);
      }

      _HRC_DUMP_STR(" -> ");
      hrc_dumper_dump_var_type(self, cdr(node));
      break;
    }

  default:
    ErrorMgr_internal_error(errmgr, "Type %d not supported by hrc emitter.\n", node_type);
  }
Exemple #2
0
/**Function********************************************************************

  Synopsis           []

  Description        []

  SideEffects        []

  SeeAlso            []

******************************************************************************/
void hrc_dumper_debug_dump_snippet(HrcDumper_ptr self,
                                   HrcDumperSnippet snippet,
                                   const HrcDumperInfo* info)
{
  const char* desc;

  switch (snippet) {
  case HDS_HRC_TOP:
    desc = "HDS_HRC_TOP";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_MODS:
    desc = "HDS_LIST_MODS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD:
    desc = "HDS_MOD";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_NAME:
    desc = "HDS_MOD_NAME";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_MOD_FORMAL_PARAMS:
    desc = "HDS_LIST_MOD_FORMAL_PARAMS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_FORMAL_PARAM:
    desc = "HDS_MOD_FORMAL_PARAM";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_MOD_INSTANCES:
    desc = "HDS_LIST_MOD_INSTANCES";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_INSTANCE:
    desc = "HDS_MOD_INSTANCE";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_INSTANCE_VARNAME:
    desc = "HDS_MOD_INSTANCE_VARNAME";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_INSTANCE_MODNAME:
    desc = "HDS_MOD_INSTANCE_MODNAME";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_MOD_INSTANCE_ACTUAL_PARAMS:
    desc = "HDS_LIST_MOD_INSTANCE_ACTUAL_PARAMS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_MOD_INSTANCE_ACTUAL_PARAM:
    desc = "HDS_MOD_INSTANCE_ACTUAL_PARAM";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_SYMBOLS:
    desc = "HDS_LIST_SYMBOLS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_SYMBOL:
    desc = "HDS_SYMBOL";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_ASSIGNS:
    desc = "HDS_LIST_ASSIGNS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_ASSIGN_INIT:
    desc = "HDS_ASSIGN_INIT";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_ASSIGN_INVAR:
    desc = "HDS_ASSIGN_INVAR";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_ASSIGN_NEXT:
    desc = "HDS_ASSIGN_NEXT";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_CONSTRAINTS:
    desc = "HDS_LIST_CONSTRAINTS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_CONSTRAINT_INIT:
    desc = "HDS_CONSTRAINT_INIT";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_CONSTRAINT_INVAR:
    desc = "HDS_CONSTRAINT_INVAR";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_CONSTRAINT_TRANS:
    desc = "HDS_CONSTRAINT_TRANS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_FAIRNESS:
    desc = "HDS_LIST_FAIRNESS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_JUSTICE:
    desc = "HDS_JUSTICE";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_COMPASSION:
    desc = "HDS_COMPASSION";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_SPECS:
    desc = "HDS_LIST_SPECS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_SPEC:
    desc = "HDS_SPEC";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_COMPILER_INFO:
    desc = "HDS_COMPILER_INFO";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_LIST_SYNTAX_ERRORS:
    desc = "HDS_LIST_SYNTAX_ERRORS";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  case HDS_ERROR:
    desc = "HDS_ERROR";
    if (info->stage & HRC_STAGE_BEGIN) {
      _HRC_DUMP_STR("Begin ");
    }
    if (info->stage & HRC_STAGE_END) {
      _HRC_DUMP_STR("End ");
    }
    _HRC_DUMP_STR_NL(desc);
    break;

  default:
    internal_error("Unexpected node %d", snippet);
  }
}