Example #1
0
static void initTables(void) { 
	 var_tab = ATtableCreate(TABLESIZE,75);
    if (!var_tab) ATerror("Table is not allocated"); 
	 
	 par_tab = ATtableCreate(TABLESIZE,75);
    if (!par_tab) ATerror("Table is not allocated"); 
}
Example #2
0
/** 
 * Creates an input string from the given buffer.
 * 
 * \param path the path to where the input string was read from
 * (data is copied to private area).
 * \param buf the buffer containing the input string
 * (pointer is taken from the caller, and released during
 * IS_destroyInputString()).
 * \param length the length of the input string, excluding the end-of-string 
 * symbol.
 * \sa IS_destroyInputString.
 * 
 * \return the newly created input string. 
 */
InputString IS_allocateString(const char *path, const unsigned char *buf, int length) {
  char *pathName = strdup(path);
  InputString tmp;

  if (buf == NULL) {
    ATerror("Cannot strdup() input string.");
    return NULL;
  }

  if (path == NULL) {
    ATerror("Cannot strdup() input string.path name");
    return NULL;
  }

  tmp = (InputString) malloc(sizeof(struct _InputString));
  if (tmp == NULL) {
    ATerror("Cannot allocate memory for InputString");
    return NULL;
  }

  tmp->path   = pathName;
  tmp->buffer = buf;
  tmp->length = length;
  tmp->index  = -1;
  tmp->linesRead = 1;
  tmp->columnsRead = 0;
  
  return tmp;
}
Example #3
0
static PT_ParseTree parsetreeFromTextFile(const char *filename) {
  PT_ParseTree parseResult = NULL;
  InputString inputString;
  
  FLT_setInjectionCountFlag(ATfalse);
  FLT_setPreferenceCountFlag(ATfalse);

  if (loadParseTable()) {
    inputString = IS_createInputStringFromFile(filename);
    parseResult = SGLR_parse(inputString, getParseTableID());
  }
  else {
    ATerror("asc-main: parse table not loaded.");
  }

  if (parseResult != NULL) {
    return parseResult;
  }
  else {
    ATerror("asc-main: unknown error while parsing %s\n", filename);
    exit(1);
  }
  
  return NULL;
}
Example #4
0
File: rw.c Project: jkeiren/muCRL
void RWsetArguments(int *argc, char ***argv) {
    int i, j=0;
    char **newargv = (char**) calloc(*argc + 3, sizeof(char*));
    if (!newargv) ATerror("Cannot allocate array argv");
    newargv[j++] = (*argv) [0];
    for(i=1; i<*argc; i++) {
        if (!strcmp((*argv)[i],"-alt")) {
            if ((++i)<*argc && strncmp((*argv)[i],"-",1))
            {
                char *code = (*argv)[i];
                if (!strcmp(code,"innermost")) {
                    tasks = &JITTYtasks;
                    newargv[j++]="-innermost";
                    ATwarning("-alt innermost is obsolete; please use -alt jitty -innermost instead");
                }
                else if (!strcmp(code,"strictleft")) {
                    tasks = &JITTYtasks;
                    newargv[j++]="-strictleft";
                    ATwarning("-alt strictleft is obsolete; please use -alt jitty instead");
                }
                else if (!strcmp(code,"jitty")) {
                    tasks = &JITTYtasks;
                }
                else if (!strcmp(code,"no")) {
                    tasks = &SUBStasks;
                }
#ifdef DYNLINK
                else if (!strcmp(code,"rww")) tasks = &RWWtasks;
                else if (!strcmp(code,"rw")) {
                    tasks = &RWtasks;
                }
#endif
                else if (!strcmp(code,"rww"))
                    ATwarning("Compiling rewriter is not available");
                else
                    ATerror("Unknown rewriter or strategy");
                continue;
            }
            ATerror("Option %s needs argument.\n",(*argv)[i-1]);
        }
        if (!strcmp((*argv)[i],"-case")) {
#ifdef DYNLINK
            if (!tasks) tasks = &RWWtasks;
#endif
            caseFlag = ATtrue;
#ifdef DYNLINK
            if (tasks != &RWWtasks && tasks != &RWtasks) continue;
#else
            continue;
#endif
        }
        j=MCRLcopyOption(newargv, *argv, *argc, i, j);
    }
    if (!tasks) {
        tasks = &JITTYtasks;
    }
    *argc = j;
    *argv = newargv;
    tasks->RWsetArguments(argc, argv);
}
Example #5
0
int main(int argc, char *argv[])
{
  ATerm bottomOfStack;
  ATerm t1 = NULL, t2 = NULL;
  int i;
  int result = 0;

  ATinit(argc, argv, &bottomOfStack);
  PT_initMEPTApi();

  if (argc < 3 || argc > 7) {
    usage(argv[0]);
  }

  for (i=1; i < argc; i++) {
    if (strcmp(argv[i], "-h") == 0) {
      usage(argv[0]);
    } 
    else if (strcmp(argv[i], "-V") == 0) {
      fprintf(stderr, "%s v%s\n", argv[0], version);
    }
    else if (strcmp(argv[i], "-l") == 0) {
      modLayout = !modLayout; 
    }
    else {
      if (t1 == NULL) {
	t1 = ATreadFromNamedFile(argv[i]);
	if (t1 == NULL) {
	  ATerror("Failed to read from %s\n", argv[i]);
	}
      }
      else if (t2 == NULL) {
	t2 = ATreadFromNamedFile(argv[i]);
	if (t2 == NULL) {
	  ATerror("Failed to read from %s\n", argv[i]);
	}
      }
      else {
	usage(argv[0]);
      }
    }
  }
  
  result = PT_compareTree(PT_getParseTreeTop(PT_ParseTreeFromTerm(t1)), 
			  PT_getParseTreeTop(PT_ParseTreeFromTerm(t2)),
                          modLayout);

  if (result < 0) {
    return -1;
  }
  if (result > 0) {
    return 1;
  }

  return 0;
}
Example #6
0
int main (int argc, char **argv)
{
  int c; 
  ATerm bottomOfStack;
  PT_ParseTree parsetree;
  ATerm ambiguities;
  ATbool atermformat = ATfalse;
  char   *input_file_name  = "-";
  char   *output_file_name = "-";
  
  while ((c = getopt(argc, argv, myarguments)) != EOF)
    switch (c) {
      case 'a':  atermformat = ATtrue;         break;
      case 'h':  usage();                      exit(0);
      case 'i':  input_file_name  = optarg;    break;
      case 'o':  output_file_name = optarg;    break;
      case 'V':  fprintf(stderr, "%s %s\n", myname, myversion);
                                               exit(0);
      default :  usage();                      exit(1);
  }

  ATinit(argc, argv, &bottomOfStack);    /* Initialize Aterm library */
  PT_initMEPTApi();

  parsetree = PT_ParseTreeFromTerm(ATreadFromNamedFile(input_file_name));

  if(parsetree == NULL) {
    ATerror("%s: could not read term from input file %s\n", 
	    myname, input_file_name);
  }

  ambiguities = PT_reportParseTreeAmbiguities(parsetree);

  if(!atermformat) {
    FILE *fp = NULL;

    if(!strcmp(output_file_name, "") || !strcmp(output_file_name,"-")) {
      fp = stdout;
    } else if(!(fp = fopen(output_file_name, "wb"))) {
      ATerror("%s: could not open %s for output.\n", myname, output_file_name);
      return 1;
    }

    prettyPrint(ambiguities,fp);

    fclose(fp);
  } else {
    ATwriteToNamedTextFile(ambiguities, output_file_name);
  }

  return 0;
}
Example #7
0
static FILE  *openLog(const char *fnam) {
  FILE *log = NULL;

  if (!fnam || !strcmp(fnam, "")) {
    ATerror("Cannot create logfile without a filename\n", fnam);
  }

  if (!(log = fopen(fnam, "wb"))) {
    ATerror("Cannot create logfile %s\n", fnam);
  }

  return log;
}
Example #8
0
/* Event handler for tool 'batch' */
ATerm batch_handler(int conn, ATerm term)
{
  ATerm in, out;
  /* We need some temporary variables during matching */
  int i0;
  char *s0;
  ATerm t0;

  if(ATmatch(term, "rec-eval(fromFile)")) {
    return fromFile(conn);
  }
  if(ATmatch(term, "rec-do(toFile(<str>,<int>))", &s0, &i0)) {
    toFile(conn, s0, i0);
    return NULL;
  }
  if(ATmatch(term, "rec-terminate(<term>)", &t0)) {
    rec_terminate(conn, t0);
    return NULL;
  }
  if(ATmatch(term, "rec-do(signature(<term>,<term>))", &in, &out)) {
    ATerm result = batch_checker(conn, in);
    if(!ATmatch(result, "[]"))
      ATfprintf(stderr, "warning: not in input signature:\n\t%\n\tl\n", result);
    return NULL;
  }

  ATerror("tool batch cannot handle term %t", term);
  return NULL; /* Silence the compiler */
}
Example #9
0
/* Event handler for tool 'toolSdf2Sig' */
ATerm toolSdf2Sig_handler(int conn, ATerm term)
{
  ATerm in, out;
  /* We need some temporary variables during matching */
  char *s0, *s1;
  ATerm t0;

  if(ATmatch(term, "rec-eval(rewrite(<term>))", &t0)) {
    return rewrite(conn, t0);
  }
  if(ATmatch(term, "rec-eval(apply-rewrite(<str>,<str>,<term>))", &s0, &s1, &t0)) {
    return apply_rewrite(conn, s0, s1, t0);
  }
  if(ATmatch(term, "rec-terminate(<term>)", &t0)) {
    rec_terminate(conn, t0);
    return NULL;
  }
  if(ATmatch(term, "rec-do(signature(<term>,<term>))", &in, &out)) {
    ATerm result = toolSdf2Sig_checker(conn, in);
    if(!ATmatch(result, "[]"))
      ATfprintf(stderr, "warning: not in input signature:\n\t%\n\tl\n", result);
    return NULL;
  }

  ATerror("tool toolSdf2Sig cannot handle term %t", term);
  return NULL; /* Silence the compiler */
}
Example #10
0
/* Event handler for tool 'restorebrackets' */
ATerm restorebrackets_handler(int conn, ATerm term)
{
  ATerm in, out;
  /* We need some temporary variables during matching */
  ATerm t0, t1;

  if(ATmatch(term, "rec-eval(restore-brackets(<term>,<term>))", &t0, &t1)) {
    return restore_brackets(conn, t0, t1);
  }
  if(ATmatch(term, "rec-terminate(<term>)", &t0)) {
    rec_terminate(conn, t0);
    return NULL;
  }
  if(ATmatch(term, "rec-eval(add-brackets(<term>,<term>))", &t0, &t1)) {
    return add_brackets(conn, t0, t1);
  }
  if(ATmatch(term, "rec-do(signature(<term>,<term>))", &in, &out)) {
    ATerm result = restorebrackets_checker(conn, in);
    if(!ATmatch(result, "[]"))
      ATfprintf(stderr, "warning: not in input signature:\n\t%\n\tl\n", result);
    return NULL;
  }

  ATerror("tool restorebrackets cannot handle term %t", term);
  return NULL; /* Silence the compiler */
}
Example #11
0
static int SDFCharacterToInt(SDF_Character sdfCharacter)
{
  int result;

  if (SDF_isCharacterNumeric(sdfCharacter)) {
    SDF_NumChar sdfNumChar = SDF_getCharacterNumChar(sdfCharacter);
    char *numchar = PT_yieldTreeToString((PT_Tree) sdfNumChar, ATfalse);
    result = atoi(numchar+1); /* remove leading backslash */ 
  }
  else if (SDF_isCharacterShort(sdfCharacter)) {
    SDF_ShortChar sdfShortChar = SDF_getCharacterShortChar(sdfCharacter);
    char *numchar = PT_yieldTreeToString((PT_Tree) sdfShortChar, ATfalse);
    if (numchar[0] != '\\') {
      result = (int) numchar[0];
    } 
    else {
      result = (int) numchar[1]; /* skip backslash */
    }
  }
  else {
    ATerror("SDFCharacterToInt: unable to convert %s\n",
	    PT_yieldTreeToString((PT_Tree) sdfCharacter, ATfalse));
    result = -1;
  }

  return result;
}
Example #12
0
static PT_CharRanges SDFCharRangesToPtCharRanges(SDF_CharRanges sdfCharRanges)
{
  PT_CharRanges result = PT_makeCharRangesEmpty();


  if (SDF_isCharRangesDefault(sdfCharRanges)) {
    SDF_CharRange sdfCharRange = SDF_getCharRangesCharRange(sdfCharRanges);
    PT_CharRange ptCharRange = SDFCharRangeToPtCharRange(sdfCharRange);
    result = PT_makeCharRangesMany(ptCharRange, result);
  }
  else if (SDF_isCharRangesConc(sdfCharRanges)) {
    SDF_CharRanges sdfLeft = SDF_getCharRangesLeft(sdfCharRanges);
    SDF_CharRanges sdfRight = SDF_getCharRangesRight(sdfCharRanges);
    PT_CharRanges ptLeft = SDFCharRangesToPtCharRanges(sdfLeft);
    PT_CharRanges ptRight = SDFCharRangesToPtCharRanges(sdfRight);
    return PT_concatCharRanges(ptLeft, ptRight);
  }
  else {
    ATerror("SDFCharRangesToPtCharRanges: unable to convert %s\n",
	    PT_yieldTreeToString((PT_Tree) sdfCharRanges, ATfalse));
    result = NULL;
  }

  return result;
}
Example #13
0
static int TB_Init(Tcl_Interp *interp)
{
    global_interp = interp;
    BUF = (char *)malloc(bufsize);
    if(!BUF)
        ATerror("Not enough space to allocate text buffer!\n");

    Tcl_CreateCommand(interp, "TBsend", Tcl_TBsend, (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
    Tcl_CreateCommand(interp, "TBstring", Tcl_TBstring, NULL, NULL);
    Tcl_CreateCommand(interp, "bgerror", Tcl_bgerror, NULL, NULL);

    if(use_toolbus) {
        /*TB_connect(cid);*/
        /*toolbus_file = Tcl_GetFile((ClientData)TB_getSocket(cid), TCL_UNIX_FD);*/
        Tcl_CreateFileHandler(cid, TCL_READABLE, tcl_toolbus_handler, NULL);
    }

    if(Tcl_EvalFile(interp, LIBDIR "/tcltk.tcl") != TCL_OK) {
        interp->result = "Cannot load file " LIBDIR "/tcltk.tcl";
        return TCL_ERROR;
    }

    Tcl_SetVar(interp, "TB_LIBDIR", LIBDIR, TCL_GLOBAL_ONLY);

    return !TCL_ERROR;
}
Example #14
0
static char* escape(const char* str, const char* escaped_chars, QuotedOption quoted)
{
  int i,j,e;
  int len = strlen(str);
  char *escaped = (char*) malloc(2 * len * sizeof(char) + (quoted ? 2 : 0) + 1);
 
  if (escaped == NULL) {
    ATerror("escape: could not allocate enough memory for escaping:\n%s\n",str);
    return NULL;
  }
 
  i = 0;
  j = 0;
 
  if (quoted == QUOTED) {
    escaped[j++] = '\"';
  }
 
  for (; i < len; i++, j++) {
    for (e = 0; escaped_chars[e]; e++) {
      if (str[i] == escaped_chars[e]) {
        escaped[j++] = '\\';
      }
    }
    escaped[j] = str[i];
  }
 
  if (quoted == QUOTED) {
    escaped[j++] = '\"';
  }
 
  escaped[j] = '\0';
 
  return escaped;
}
Example #15
0
void addTable(const char *name, const char * valueType)
{
  int i;

  if (!TS_tableExists(name)) {
    for (i = 0; i < MAX_NR_OF_TABLES; i++) {
      if (tableStore[i].name == NULL) {
	tableStore[i].name = strdup(name);
	tableStore[i].valueType = strdup(valueType);
	tableStore[i].table = T_createTable();
	return;
      }
    }
  }
  else {
    if (!streq(tableStore[TS_findTable(name)].valueType, valueType)) {
      ATabort("Table %s already exists with different value type than %s\n",
	      name, valueType);
    }

    return;
  }

  ATerror("addTable: table store exhausted.\n");
}  
Example #16
0
ERR_Error PERR_lowerError(PERR_Error pError)
{
  PERR_StrCon pDescription = PERR_getErrorDescription(pError);
  PERR_SubjectList pSubjects = PERR_getErrorList(pError);
  char *description = strdup(PERR_lowerStrCon(pDescription));
  ERR_SubjectList subjects = PERR_lowerSubjects(pSubjects);
  ERR_Error error;

  if (PERR_isErrorInfo(pError)) {
    error = ERR_makeErrorInfo(description, subjects);
  }
  else if (PERR_isErrorWarning(pError)) {
    error = ERR_makeErrorWarning(description, subjects);
  }
  else if (PERR_isErrorError(pError)) {
    error = ERR_makeErrorError(description, subjects);
  }
  else if (PERR_isErrorFatal(pError)) {
    error = ERR_makeErrorFatal(description, subjects);
  }
  else {
    ATerror("unknown error type: %t\n", pError);
    error = NULL;
  }
  free(description);
  return error;
}
Example #17
0
void init_first() {
  max_first_sets = 512;
  first_sets = (CC_Class **)calloc(max_first_sets, sizeof(CC_Class *));
  if (!first_sets) {
    ATerror("out of memory in CC_init (2) %d\n", max_first_sets);
  }
}
Example #18
0
static void prettyPrint(ATerm t, FILE *fp)
{
  ATermList ambs;
  int count;
  int i;

  if (ATmatch(t, "ambiguities(<int>,[<list>])",&count,&ambs)) {
    if (count == 0) {
      ATfprintf(fp,"No ambiguities\n");
    }
    else {
      ATfprintf(fp, "%d ambiguity cluster%s:\n\n",count,count > 1 ? "s" : "");
      
      for(i = 1;!ATisEmpty(ambs); ambs = ATgetNext(ambs), i++) {
	ATerm amb = ATgetFirst(ambs);
	ATermList productions;
	ATerm line, col, offset;

	if(ATmatch(amb,"ambiguity("
		       "  position(character(0),"
		       "           line(<term>),"
		       "           col(<term>),"
		       "           char(<term>)),"
		       "  productions([<list>]))",
		   &line, 
		   &col, 
		   &offset, 
		   &productions)) {
	  ATfprintf(fp,"[%d/%d] at (%t:%t):\n", i, count, line, col);
	  for(;!ATisEmpty(productions); productions = ATgetNext(productions)) {
	    char *str = deslash(ATgetFirst(productions));
	    ATfprintf(fp,"  %s\n", str);
	    free(str);
	  }

	  ATfprintf(fp,"\n");
	} else {
	  ATerror("%s: Unexpected term: %t\n",myname,t);
	}
      }
    }
  } else {
    ATerror("%s: Unexpected term: %t\n", myname,t);
    return;
  }
}
Example #19
0
void SG_initMarks(void)
{
  marks = ATindexedSetCreate(INITIAL_TABLE_SIZE, LOAD_PERCENTAGE);

  if (marks == NULL) {
    ATerror("SG_initMarks: unable to allocate table for marking.");
  }
}
Example #20
0
void CAESAR_INIT_GRAPH(void) {
    int argc;
    char **argv;
    char *FILENAME;
    char *OPTIONS;
    char *token;

    ATinitialize(0,NULL);
    ATsetWarningHandler(WarningHandler);
    ATsetErrorHandler(ErrorHandler);

    /* ATwarning ("Executing CAESAR_INIT_GRAPH"); */

    FILENAME = getenv ("OPEN_CAESAR_FILE");
    if (FILENAME == NULL)
        CAESAR_ERROR ("undefined environment variable $OPEN_CAESAR_FILE");

    OPTIONS = getenv ("MCRL_OPTIONS");
    if (OPTIONS == NULL)
        CAESAR_ERROR ("undefined environment variable $MCRL_OPTIONS");

#define MAX_OPTIONS 100

    argv = (char**)calloc(MAX_OPTIONS,sizeof(char*));
    argc = 0;
    argv[argc] = "mcrl_open";
    // ATwarning ("%d -> \"%s\"\n", argc, argv [argc]);
    argc ++;

    /* skip leading white spaces */
    while (*OPTIONS == ' ') OPTIONS++;
    token = strtok (OPTIONS, " ");
    while (1) {
        if (token == NULL) break;
        argv [argc] = token;
        // ATwarning ("%d -> \"%s\"\n", argc, argv [argc]);
        argc ++;
        token = strtok ((char *) NULL, " ");
    }

    argv [argc] = FILENAME;
    // ATwarning ("%d -> \"%s\"\n", argc, argv [argc]);
    argc ++;

    MCRLsetArguments(&argc, &argv);
    RWsetArguments(&argc,&argv);

    if (!MCRLinitialize())
        ATerror("%s cannot be opened\n",FILENAME);
    ATwarning("Opened %s",FILENAME);
    RWinitialize(MCRLgetAdt());
    LTSsetArguments(&argc,&argv);
    LTSinitialize(wrap_call_back);

    Label_set = ATindexedSetCreate(1024,75);
    /* ATwarning ("Leaving CAESAR_INIT_GRAPH"); */
}
Example #21
0
int main(int argc, char **argv)
{
  int c;
  ATerm bottomOfStack;
  PT_ParseTree tree, flatTree;

  /*  Configuration items  */
  char   *input="-";
  char   *output="-";
  ATbool bafmode=ATtrue;
  ATbool verbose=ATfalse;
  ATbool proceed=ATtrue;

  extern char *optarg;
  extern int   optind;

  /*  Commandline mode  */

  while ((c = getopt(argc, argv, myarguments)) != -1) {
    switch (c) {
      case 'b':  bafmode = ATtrue;                       break;
      case 'i':  input=optarg;                           break;
      case 'o':  output=optarg;                          break;
      case 't':  bafmode = ATfalse;                      break;
      case 'v':  verbose = ATtrue;                       break;
      case 'V':  version(); proceed=ATfalse;             break;

      case 'h':
      default:   usage(); proceed=ATfalse;                     break;
    }
  }
  argc -= optind;
  argv += optind;

  ATinit(argc, argv, &bottomOfStack);
  PT_initMEPTApi();
  PT_initAsFix2Api();

  if(proceed) {
    tree = PT_ParseTreeFromTerm(ATreadFromNamedFile(input));
    flatTree = flattenPT(tree);

    if(!flatTree) {
      ATerror("%s: conversion failed.", myname);
    }
    if(bafmode) {
      ATwriteToNamedBinaryFile(PT_ParseTreeToTerm(flatTree), output);
    }
    else {
      ATwriteToNamedTextFile(PT_ParseTreeToTerm(flatTree), output);
    }
  }

  return 0;
}
Example #22
0
static PT_ParseTree parsetreeFromATermFile(const char *filename) {
  ATerm term = NULL;
    
  term = ATreadFromNamedFile(filename);

  if (term != NULL && ATmatch(term, "parsetree(<term>,<int>)", NULL, NULL)) {
    return PT_ParseTreeFromTerm(term);
  }

  ATerror("asc-main: can not read parse tree from file %s\n", filename);
  return NULL;
}
Example #23
0
ATerm hello_handler(int conn, ATerm inp)  /* Handle input from ToolBus */
{ ATerm arg, isig, osig;

  if(ATmatch(inp, "rec-eval(get-text)"))
    return ATmake("snd-value(text(\"Hello World, my first ToolBus tool in C!\n\"))");
  if(ATmatch(inp, "rec-terminate(<term>)", &arg))
    exit(0);
  if(ATmatch(inp, "rec-do(signature(<term>,<term>))", &isig, &osig)){
    return NULL;                         /* we don't do a signature check */
  }  
  ATerror("hello: wrong input %t received\n", inp);
  return NULL;
}
Example #24
0
ATerm printer_handler(int conn, ATerm e)
{
  char *text;
  ATerm arg;
  if(ATmatch(e, "rec-do(print-text(<str>))", &text)){
    ATprintf("%s", text);
    return NULL;
  } else
    if(ATmatch(e, "rec-terminate(<term>)", &arg)){
      exit(0);
  } else {
    ATerror("printer: wrong event received: %t\n", e);
    return NULL;
  }
}
Example #25
0
static PT_Tree addBoxToTextFunction(PT_ParseTree parseTree)
{
  PT_Tree newTree = NULL;

  if (PT_isValidParseTree(parseTree)) 
  {
    PT_Tree ptBox = PT_getParseTreeTree(parseTree);

    newTree = PT_applyFunctionToTree("box2text", "Text", 1, ptBox);
  }
  else 
  {
    ATerror("addBoxToTextFunction: not a proper parse tree: %t\n",
	    (ATerm) parseTree);
    return (PT_Tree) NULL;
  }
  return newTree;
}
Example #26
0
static void DisabledEdges(ATermList gs) {
     ATermList smds = MCRLgetListOfSummands(),
     pars = MCRLgetListOfPars();
     int false_cnt = 0, true_cnt = 0, n = ATgetLength(smds);
     static int k = 1;
     SubstituteInPars(pars, gs);
     for (;!ATisEmpty(smds);smds=ATgetNext(smds)) {
         ATerm smd = ATgetFirst(smds),
               c = ATgetArgument((ATermAppl) smd,4),
         cw = NULL;
         if (!ATisEmpty((ATermList) ATgetArgument((ATermAppl) smd, 0)))
          ATerror("Flag -extra is used while sum variables occur");
         cw = RWrewrite(c);
         if (
           ATisEqual(cw, MCRLterm_false)) false_cnt++;
         if (
           ATisEqual(cw, MCRLterm_true)) true_cnt++;
         }
         fprintf(stdout, "Summand %d N = %d disabled %d enabled %d\n", 
         k++, n, false_cnt, true_cnt);
     }
Example #27
0
CC_Class *get_first_set(PT_Symbol symbol, ATbool create) {
  long index;
  int old_size;

  /* Associate a unique integer with a symbol. */
  index = internSymbol(symbol);
  if (index >= max_first_sets) {
    old_size = max_first_sets;
    max_first_sets *= 2;
    first_sets = (CC_Class **)realloc(first_sets, max_first_sets*sizeof(CC_Class *));
    if (!first_sets) {
      ATerror("out of memory in get_first_set %d\n", max_first_sets);
    }
    memset(&first_sets[old_size], 0, old_size*sizeof(CC_Class *));
  }
  if (create && first_sets[index] == NULL) {
    first_sets[index] = CC_makeClassEmpty();
  }

  return first_sets[index];
}
Example #28
0
static PT_CharRanges SDFCharClassToPtCharRanges(SDF_CharClass sdfCharClass)
{
  PT_CharRanges result;

  if (SDF_isCharClassSimpleCharclass(sdfCharClass)) {
    SDF_OptCharRanges sdfOCR = SDF_getCharClassOptCharRanges(sdfCharClass);

    if (SDF_isOptCharRangesAbsent(sdfOCR)) {
      result = PT_makeCharRangesEmpty();
    }
    else {
      SDF_CharRanges sdfCharRanges = SDF_getOptCharRangesCharRanges(sdfOCR);
      result = SDFCharRangesToPtCharRanges(sdfCharRanges);
    } 
  }
  else {
    ATerror("SDFCharClassToPtCharRanges: unable to convert characterclass: %s\n",
	    PT_yieldTreeToString((PT_Tree) sdfCharClass, ATfalse));
    result = NULL;
  }
  
  return result;
}
Example #29
0
static PT_Tree addEqsSyntaxFunction(const char *name, PT_ParseTree parseTree)
{
  SDF_ModuleName sdfModuleName = SDF_makeModuleName(name);
  PT_Tree ptModuleName = PT_TreeFromTerm(SDF_ModuleNameToTerm(sdfModuleName));
  PT_Tree newTree = NULL;

  if (PT_isValidParseTree(parseTree)) {
    PT_Tree ptSyntax = PT_getParseTreeTree(parseTree);

    newTree = PT_applyFunctionToTree("add-equation-module",
				     "SDF",
				     2,
				     ptModuleName,
				     ptSyntax);

  } 
  else {
    ATerror("add_eqs_syntax: not a proper parse tree: %t\n", (ATerm) parseTree);
    return (PT_Tree) NULL;
  }

  return newTree;
}
Example #30
0
/* Event handler for tool 'sdfchecker' */
ATerm sdfchecker_handler(int conn, ATerm term)
{
  ATerm in, out;
  /* We need some temporary variables during matching */
  ATerm t0;

  if(ATmatch(term, "rec-eval(check-sdf(<term>))", &t0)) {
    return check_sdf(conn, t0);
  }
  if(ATmatch(term, "rec-terminate(<term>)", &t0)) {
    rec_terminate(conn, t0);
    return NULL;
  }
  if(ATmatch(term, "rec-do(signature(<term>,<term>))", &in, &out)) {
    ATerm result = sdfchecker_checker(conn, in);
    if(!ATmatch(result, "[]"))
      ATfprintf(stderr, "warning: not in input signature:\n\t%\n\tl\n", result);
    return NULL;
  }

  ATerror("tool sdfchecker cannot handle term %t", term);
  return NULL; /* Silence the compiler */
}