ATermList get_imports(ATermList decls) { ATerm decl, mod, spec; ATermList mods, new_decls; new_decls = ATmakeList0(); while(!ATisEmpty(decls)) { decl = ATgetFirst(decls); decls = ATgetNext(decls); if(ATmatch(decl, "Imports([<list>])", &mods)) { while(!ATisEmpty(mods)) { mod = ATgetFirst(mods); mods = ATgetNext(mods); if(ATindexOf(imported, mod, 0) == -1) { if(!silent) ATfprintf(stderr, " importing: %t\n", mod); imported = ATinsert(imported, mod); sprintf(file_name, "%s.r", t_string(mod)); spec = parse_file(file_name); new_decls = ATconcat(spec_decls(spec), new_decls); } else { if(!silent) ATfprintf(stderr, " importing: %t (done)\n", mod); } } } else { new_decls = ATinsert(new_decls, decl); } } return new_decls; }
static ATermList powerList0(ATermList list) { if (ATisEmpty(list)) { return ATinsert(ATempty, (ATerm)ATempty); } else { ATerm x = ATgetFirst(list); ATermList xs = ATgetNext(list); ATermList xss = powerList0(xs); return ATconcat(xss, mapInsertX(x, xss)); } }
int main(int argc, char **argv) { int i; ATerm bos; ATermList list; ATinit(argc,argv,&bos); list = ATempty; for (i = 1; i < argc; i++) { FILE *f = fopen(argv[i], "r"); ATwarning("Adding %s.\n", argv[i]); if (!f) ATabort("Error opening file %s.\n", argv[i]); list = ATconcat(list,(ATermList)ATreadFromTextFile(f)); fclose(f); } ATwriteToTextFile((ATerm)list,stdout); return 0; }
void abstractSummands(){ ATermList mayMustSums, newSums, sums = MCRLgetListOfSummands(); ATerm proc, sum; proc = MCRLgetProc(); newSums = ATmakeList0(); P("Generating Abstract Summands"); sums = ATreverse(sums); for(nSum = 1; !ATisEmpty(sums); sums= ATgetNext(sums), nSum++){ sum = ATgetFirst(sums); mayMustSums = generateNewSums(sum); newSums = ATconcat(newSums, mayMustSums); fprintf(stderr,"."); } proc = (ATerm) ATsetArgument((ATermAppl) proc, (ATerm)newSums, 2); MCRLsetProc(proc); fprintf(stderr,"\n"); }
PT_CharRanges PT_concatCharRanges(PT_CharRanges ranges1, PT_CharRanges ranges2) { return PT_CharRangesFromTerm((ATerm)ATconcat((ATermList) ranges1, (ATermList) ranges2)); }
int main(int argc, char *argv[]) { int i, j = 0; char **newargv = (char**) calloc(argc + 2, sizeof(char*)); ATsetWarningHandler(WarningHandler); ATsetErrorHandler(ErrorHandler); if (!newargv) ATerror("Cannot allocate array argv"); newargv[j++] = argv[0]; newargv[j++] = "-no-extra-rules"; ATinit(argc, argv, (ATerm*) &argc); ATprotect((ATerm*) &smds); ATprotect((ATerm*) &pars); ATprotect((ATerm*) &inits); ATprotect((ATerm*) &vars); ATprotect((ATerm*) &actnames); ATprotect((ATerm*) &actargs); vars = actnames = actargs = ATempty; for (i=1;i<argc;i++) { if (!strcmp(argv[i],"-help")) { help(); exit(0); } if (!strcmp(argv[i],"-version")) { version(); exit(0); } if (!strcmp(argv[i],"-pars")) { pars = ATempty; continue; } if (!strcmp(argv[i],"-npars")) { npars = ATtrue; continue; } if (!strcmp(argv[i],"-extra")) { extra = ATtrue; continue; } newargv[j++] = argv[i]; } if (extra) { if (!MCRLinitRW(j, newargv)) exit(EXIT_FAILURE); RWdeclareVariables(MCRLgetListOfPars()); } else {if (!MCRLinitSU(j, newargv)) exit(EXIT_FAILURE);} if (npars) { fprintf(stdout,"%d", MCRLgetNumberOfPars()); exit(EXIT_SUCCESS); } smds = MCRLgetListOfSummands(); if (pars) { pars = MCRLgetListOfPars(); inits = MCRLgetListOfInitValues(); } ATfprintf(stdout, "Number of process parameters: %d\n", MCRLgetNumberOfPars()); ATfprintf(stdout, "Number of summands: %d\n",ATgetLength(smds)); for (;!ATisEmpty(smds);smds=ATgetNext(smds)) { ATerm smd = ATgetFirst(smds); ATerm actname = ATgetArgument((ATermAppl) smd, 1), actarg = ATgetArgument((ATermAppl) smd, 2); vars = ATconcat(vars, (ATermList) ATgetArgument((ATermAppl) smd, 0)); if (ATindexOf(actnames , actname, 0) < 0 || ATindexOf(actargs , actarg, 0)<0) { actnames = ATinsert(actnames, actname); actargs = ATinsert(actargs, actarg); } if (extra) { if (!ATisEmpty(vars)) ATerror( "Flag -extra cannot be used, there are sum variables present"); DisabledEdges( (ATermList) ATgetArgument( (ATermAppl)ATgetArgument((ATermAppl) smd, 3), 0)); } } ATfprintf(stdout, "Number of sum variables: %d\n", ATgetLength(vars)); ATfprintf(stdout, "Number of different action names: %d\n", ATgetLength(actnames)); if (pars) { ATfprintf(stdout, "Process parameters\n"); for (i=1;!ATisEmpty(pars)&&!ATisEmpty(inits); pars=ATgetNext(pars), inits=ATgetNext(inits),i++) { ATerm par = ATgetFirst(pars); ATfprintf(stdout, "%t:\t%t\tinit[%d]=%t\n", MCRLprint( ATgetArgument((ATermAppl)par, 0)), MCRLprint(ATgetArgument((ATermAppl)par, 1)), i, MCRLprint(ATgetFirst(inits))); } } exit(EXIT_SUCCESS); }