Beispiel #1
0
static
void init(void)
{
  current = malloc(sizeof(struct position));

  AltFun = ATmakeAFun("alt", 2, ATfalse);
  ATprotectAFun(AltFun);
  SomeFun = ATmakeAFun("Some", 1, ATfalse);
  ATprotectAFun(SomeFun);
  NoneFun = ATmakeAFun("None", 0, ATfalse);
  ATprotectAFun(NoneFun);
  AmbFun = ATmakeAFun("amb", 1, ATfalse);
  ATprotectAFun(AmbFun);
  init_cons();
}
Beispiel #2
0
void STRSGLR_ensure_init(void)
{
    ATerm foo;

    static ATbool STRSGLR_init = ATfalse;
    if(STRSGLR_init)
        return;

    STRSGLR_init = ATtrue;


    ATregisterBlobDestructor(parse_table_blob_destructor);

    PT_initMEPTApi();
    PT_initAsFix2Api();
    initErrorApi();

    SG_TOOLBUS_OFF();
    SG_OUTPUT_ON();
    foo = STRSGLR_set_default_config();

    none_term = (ATerm) ATmakeAppl(ATmakeAFun("None", 0, ATfalse));
    active_parse_tables = ATmakeList(0);
    inactive_parse_tables = malloc(sizeof(ATerm*) * MAX_INACTIVE_PARSE_TABLES);
    num_inactive_parse_tables = 0;

    ATprotect(&none_term);
    ATprotect(&parse_error_term);
    ATprotectList(&active_parse_tables);
}
Beispiel #3
0
ATerm createMustSum(ATerm sum){	
	ATerm cond, newCond, condSort, act, newAct, newSum;
	char newActName[250];
	AFun memberTag; 
	ATbool toAbs = ATfalse;
	
	memberTag = createNewFuncSym(memberSym, 
			ATmakeList2(MCRLterm_bool, liftSort(MCRLterm_bool)));
	
	cond = (ATerm) ATgetArgument((ATermAppl) sum ,4);	
	condSort = getTermSort(cond);
	
	if(isLifted(condSort)) toAbs = ATtrue;
	
	if(isAbstracted(condSort))
		cond = createGammaTerm(cond, condSort);
		
	if(toAbs){	
		newCond = (ATerm) ATmakeAppl1(MCRLsym_not,
			(ATerm) ATmakeAppl2(memberTag, MCRLterm_false, cond));
	}
	else{
		newCond = cond;
		newSum = sum;
	}
	newSum = (ATerm) ATsetArgument((ATermAppl) sum, (ATerm) newCond, 4);
	act = (ATerm) ATgetArgument((ATermAppl) sum, 1);
	appendString(MCRLgetName(act), mustSufix, newActName);
	newAct = (ATerm) ATmakeAppl0(ATmakeAFun(newActName, 0, ATtrue));
	return (ATerm) ATsetArgument((ATermAppl) newSum, newAct, 1);
}
static void writeADT(A2PWriter writer, A2PType expected, ATerm value){
	int termType = ATgetType(value);
	if(termType == AT_APPL){
		ATermAppl appl = (ATermAppl) value;
		AFun fun = ATgetAFun(appl);
		char *name = ATgetName(fun);
		int arity = ATgetArity(fun);
		A2PType constructorType = A2PlookupConstructorType(expected, name, arity);
		if(constructorType == NULL){ fprintf(stderr, "Unable to find a constructor that matches the given ADT type. Name: %s, arity: %d, ADT name: %s.\n", name, arity, ((A2PAbstractDataType) expected->theType)->name); exit(1); }
		
		writeConstructor(writer, constructorType, appl);
	}else{
		A2PType wrapper;
		switch(termType){
			case AT_INT:
				wrapper = A2PlookupConstructorWrapper(expected, A2PintegerType());
				break;
			case AT_REAL:
				wrapper = A2PlookupConstructorWrapper(expected, A2PrealType());
				break;
			default:
				fprintf(stderr, "The given ATerm of type: %d, can not be a constructor.\n", termType);
				exit(1);
		}
		
		if(wrapper == NULL){ fprintf(stderr, "Unable to find constructor wrapper for ATerm with type : %d.\n", termType); exit(1);}
		
		writeConstructor(writer, wrapper, ATmakeAppl1(ATmakeAFun(((A2PConstructorType) wrapper->theType)->name, 1, ATfalse), value));
	}
}
Beispiel #5
0
ATermList TS_getTableNames(void) 
{
  ATermList tableNames = ATempty;
  int i;

  for(i = 0; i < MAX_NR_OF_TABLES; i++) {
    if (tableStore[i].name != NULL) {
      AFun fun = ATmakeAFun(tableStore[i].name, 0, ATtrue);
      ATermAppl appl = ATmakeAppl0(fun);
      tableNames = ATinsert(tableNames, (ATerm)appl);
    } 
  }
  return tableNames;
}
Beispiel #6
0
ATerm CO_unquoteAppl(ATerm appl) 
{
  AFun fun;
  int arity;
  char *name = NULL;
  ATermList args = NULL;

  assert(ATgetType(appl) == AT_APPL);

  fun = ATgetAFun((ATermAppl) appl);
  arity = ATgetArity(fun);
  name = ATgetName(fun);
  args = ATgetArguments((ATermAppl) appl);
  fun = ATmakeAFun(name, arity, ATfalse);

  return (ATerm) ATmakeApplList(fun, args);
}
Beispiel #7
0
ATermList TS_removeValueFromAllTables(ATerm key)
{
  int i;
  ATermList changedTables = ATempty;

  for(i = 0; i < MAX_NR_OF_TABLES; i++) {
    if (tableStore[i].name != NULL) {
      Table table = tableStore[i].table;
      if (T_containsKey(table, key)) {
	AFun fun = ATmakeAFun(tableStore[i].name, 0, ATtrue);
	ATermAppl appl = ATmakeAppl0(fun);
	changedTables = ATinsert(changedTables, (ATerm)appl);

        T_removeValue(table, key);
      }
    }
  }
  return changedTables;
}
PROCDECL(_stratego_w_5);
PROCDECL(_stratego_x_5);
PROCDECL(_stratego_y_5);
PROCDECL(_stratego_z_5);
PROCDECL(_stratego_a_6);
PROCDECL(_stratego_b_6);
PROCDECL(_stratego_c_6);
PROCDECL(_stratego_d_6);
PROCDECL(_stratego_e_6);
PROCDECL(_stratego_f_6);
PROCDECL(_stratego_g_6);
PROCDECL(_stratego_h_6);
PROCDECL(_stratego_i_6);

PROC(_stratego_init_afuns)
  MOVE(d_0,ATmakeAFun("TNil",0,0));
  MOVE(a_0,ATmakeAFun("TCons",2,0));
ENDPROC

PROC(_stratego_main)
  Tset(ATmakeString("number-test"));
  Tdupl();
  Epushd(0,1);
  MoveTop(0,1);
  NotNULLd(0,1);
  Tset(App2("TCons",App0("stderr"),App2("TCons",App2("Cons",ATmakeString("test suite: "),App2("Cons",Egetd(0,1),App0("Nil"))),App0("TNil"))));
  Ccall(_stratego_s_5);
  Epopd(0,1);
  Tpop();
  Ccall(_stratego_t_5);
  Ccall(_stratego_y_5);
Beispiel #9
0
ATermList generateNewSums(ATerm sum){
	ATerm maySum, mustSum;
	ATermList procArgs, newProcArgs;
	ATerm  proc, procArg, procArgSort;
	ATermList actArgs;
	ATermList newActArgs;
   ATerm actArg, actArgSort;
	ATermList vars;
	ATerm var, varName, varSort;
	ATerm cond, auxMayCondition, auxMustCondition;
	int i;
	char auxVarName[NAME_LENGTH];
	
	proc = (ATerm) ATgetArgument(sum, 3);
	procArgs = (ATermList)ATgetArgument(proc, 0);
	newProcArgs = ATmakeList0();
	
	auxMayCondition = NULL;
	auxMustCondition = NULL;
	maySum = sum;	
	mustSum = sum;					
	if(HOMOMORPHISM){
		for(i=0;!ATisEmpty(procArgs); procArgs= ATgetNext(procArgs)) {
			procArg = ATgetFirst(procArgs);	
			
			procArgSort = getTermSort(procArg);
			
			if(isLifted(procArgSort)){
				sprintf(auxVarName, "%s%d", auxVarPrefix, i);
				i++;
				varName = (ATerm)ATmakeAppl0(ATmakeAFun(auxVarName, 0, ATtrue));
				varSort = getUnLifted(procArgSort);
				maySum = addVar(maySum, varName, varSort);
				newProcArgs = ATappend(newProcArgs, 
						createSingleton(varName, varSort));
				auxMayCondition = createMemberAuxCondition(auxMayCondition, 
							varName, procArg, varSort);
				auxMustCondition = createSingletonAuxCondition(auxMustCondition, 
						procArg, procArgSort);
			}
			else{
				newProcArgs = ATappend(newProcArgs, procArg);	
			}
		}
		proc = (ATerm)ATsetArgument((ATermAppl)
					proc, (ATerm) newProcArgs, 0);
		maySum = (ATerm)ATsetArgument((ATermAppl)maySum, proc, 3);
	
		mustSum = sum;					
		actArgs = (ATermList)ATgetArgument(sum,2);
		newActArgs = ATmakeList0();
				
		for(;!ATisEmpty(actArgs); actArgs= ATgetNext(actArgs),i++) {
			actArg = ATgetFirst(actArgs);	
			actArgSort = getTermSort(actArg);
			if(isLifted(actArgSort)){
				sprintf(auxVarName, "%s%d", auxVarPrefix, i);
				i++;
				varName = (ATerm)ATmakeAppl0(ATmakeAFun(auxVarName, 0, ATtrue));
				varSort = getUnLifted(actArgSort);
				maySum = addVar(maySum, varName, varSort);
				mustSum = addVar(mustSum, varName, varSort);
				newActArgs = ATappend(newActArgs, varName);
				auxMayCondition = createMemberAuxCondition(auxMayCondition, 
							varName, actArg, varSort);
				auxMustCondition = createMemberAuxCondition(auxMustCondition, 
							varName, actArg, varSort);
				auxMustCondition = createSingletonAuxCondition(auxMustCondition, 
						actArg, actArgSort);	
			}
			else{
				newActArgs = ATappend(newActArgs, actArg);	
			}
			maySum = (ATerm)ATsetArgument((ATermAppl)maySum,
				(ATerm)newActArgs, 2);
		}
	}
		maySum = (ATerm)createMaySum(maySum);
		mustSum = (ATerm)createMustSum(mustSum);

	if(HOMOMORPHISM){	
		cond = ATgetArgument(maySum, 4);
		cond = createAuxCondition2(auxMayCondition, cond);	
		maySum = (ATerm)ATsetArgument((ATermAppl)maySum, cond, 4);
	
		cond = ATgetArgument(mustSum, 4);
		cond = createAuxCondition2(auxMustCondition, cond);	
		mustSum = (ATerm)ATsetArgument((ATermAppl)mustSum, cond, 4);
	}
	
	if(MAY && MUST)
		return ATmakeList2(maySum, mustSum);
	else if(MAY)
		return ATmakeList1(maySum);
	else if(MUST)
		return ATmakeList1(mustSum);
}
Beispiel #10
0
PROCDECL(_stratego_a_4);
PROCDECL(_stratego_b_4);
PROCDECL(_stratego_c_4);
PROCDECL(_stratego_d_4);
PROCDECL(_stratego_e_4);
PROCDECL(_stratego_f_4);
PROCDECL(_stratego_g_4);
PROCDECL(_stratego_h_4);
PROCDECL(_stratego_i_4);
PROCDECL(_stratego_j_4);
PROCDECL(_stratego_k_4);
PROCDECL(_stratego_l_4);
PROCDECL(_stratego_m_4);

PROC(_stratego_init_afuns)
  MOVE(c_10,ATmakeAFun("Runtime",1,0));
  MOVE(t_9,ATmakeAFun("Silent",0,0));
  MOVE(f_9,ATmakeAFun("Binary",0,0));
  MOVE(t_8,ATmakeAFun("Output",1,0));
  MOVE(f_8,ATmakeAFun("Input",1,0));
  MOVE(t_7,ATmakeAFun("Program",1,0));
  MOVE(e_7,ATmakeAFun("Help",0,0));
  MOVE(z_6,ATmakeAFun("Undefined",1,0));
  MOVE(z_0,ATmakeAFun("Nil",0,0));
  MOVE(v_0,ATmakeAFun("TNil",0,0));
  MOVE(s_0,ATmakeAFun("TCons",2,0));
  MOVE(e_0,ATmakeAFun("Cons",2,0));
ENDPROC

PROC(_stratego_main)
  Cpush(b_0);
PROCDECL(_stratego_main);
PROCDECL(_stratego_l_16);
PROCDECL(_stratego_m_16);
PROCDECL(_stratego_n_16);
PROCDECL(_stratego_o_16);
PROCDECL(_stratego_p_16);
PROCDECL(_stratego_q_16);
PROCDECL(_stratego_r_16);
PROCDECL(_stratego_u_16);
PROCDECL(_stratego_v_16);
PROCDECL(_stratego_z_16);
PROCDECL(_stratego_a_17);
PROCDECL(_stratego_e_17);

PROC(_stratego_init_afuns)
  MOVE(h_10,ATmakeAFun("Nil",0,0));
  MOVE(t_1,ATmakeAFun("Imports",1,0));
  MOVE(i_1,ATmakeAFun("Module",2,0));
  MOVE(p_0,ATmakeAFun("Cons",2,0));
  MOVE(g_0,ATmakeAFun("TNil",0,0));
  MOVE(f_0,ATmakeAFun("TCons",2,0));
ENDPROC

PROC(_stratego_main)
  Cpush(b_0);
  Epushd(0,1);
  Tset(App0("stdin"));
  Ccall(_stratego_l_16);
  Ccall(_stratego_r_16);
  MoveTop(0,1);
  NotNULLd(0,1);
Beispiel #12
0
int CSwriteString(CompressedStream *cs, char *str){

   return HFencodeATerm(cs->bs, &cs->tree, (ATerm)ATmakeAppl(ATmakeAFun(str,0,ATtrue)));
}
Beispiel #13
0
PROCDECL(_stratego_a_4);
PROCDECL(_stratego_b_4);
PROCDECL(_stratego_c_4);
PROCDECL(_stratego_d_4);
PROCDECL(_stratego_e_4);
PROCDECL(_stratego_f_4);
PROCDECL(_stratego_g_4);
PROCDECL(_stratego_h_4);
PROCDECL(_stratego_i_4);
PROCDECL(_stratego_j_4);
PROCDECL(_stratego_k_4);
PROCDECL(_stratego_l_4);
PROCDECL(_stratego_m_4);

PROC(_stratego_init_afuns)
  MOVE(q_10,ATmakeAFun("Runtime",1,0));
  MOVE(h_10,ATmakeAFun("Silent",0,0));
  MOVE(t_9,ATmakeAFun("Binary",0,0));
  MOVE(h_9,ATmakeAFun("Output",1,0));
  MOVE(t_8,ATmakeAFun("Input",1,0));
  MOVE(h_8,ATmakeAFun("Program",1,0));
  MOVE(s_7,ATmakeAFun("Help",0,0));
  MOVE(n_7,ATmakeAFun("Undefined",1,0));
  MOVE(z_0,ATmakeAFun("TNil",0,0));
  MOVE(v_0,ATmakeAFun("Nil",0,0));
  MOVE(p_0,ATmakeAFun("TCons",2,0));
  MOVE(a_0,ATmakeAFun("Cons",2,0));
ENDPROC

PROC(_stratego_main)
  TestFunTop(a_0);
PROCDECL(_stratego_m_22);
PROCDECL(_stratego_n_22);
PROCDECL(_stratego_q_22);
PROCDECL(_stratego_r_22);
PROCDECL(_stratego_s_22);
PROCDECL(_stratego_t_22);
PROCDECL(_stratego_u_22);
PROCDECL(_stratego_x_22);
PROCDECL(_stratego_y_22);
PROCDECL(_stratego_z_22);
PROCDECL(_stratego_a_23);
PROCDECL(_stratego_b_23);
PROCDECL(_stratego_c_23);

PROC(_stratego_init_afuns)
  MOVE(k_5,ATmakeAFun("H",2,0));
  MOVE(e_2,ATmakeAFun("Nil",0,0));
  MOVE(q_1,ATmakeAFun("Cons",2,0));
  MOVE(b_1,ATmakeAFun("TNil",0,0));
  MOVE(y_0,ATmakeAFun("TCons",2,0));
ENDPROC

PROC(_stratego_main)
  Tset(ATmakeString("list-set-test"));
  Tdupl();
  Epushd(0,1);
  MoveTop(0,1);
  NotNULLd(0,1);
  Tset(App2("TCons",App0("stderr"),App2("TCons",App2("Cons",ATmakeString("test suite: "),App2("Cons",Egetd(0,1),App0("Nil"))),App0("TNil"))));
  Ccall(_stratego_d_22);
  Epopd(0,1);
Beispiel #15
0
#include <stratego.h>
#include <stratego-lib.h>
#include <stratego-ext.h>
DOIT

VARDECL(AFun,z_0);
VARDECL(AFun,m_0);
VARDECL(AFun,h_0);
VARDECL(AFun,g_0);

PROC(_stratego_init_afuns)
  MOVE(z_0,ATmakeAFun("B",0,0));
  MOVE(m_0,ATmakeAFun("A",0,0));
  MOVE(h_0,ATmakeAFun("G",2,0));
  MOVE(g_0,ATmakeAFun("F",2,0));
ENDPROC

PROCDECL(_stratego_main);
PROCDECL(_stratego_i_0);
PROCDECL(_stratego_j_0);
PROCDECL(_stratego_k_0);

PROC(_stratego_main)
  Tset(App2("F",App0("B"),App2("G",App0("A"),App0("C"))));
  Ccall(_stratego_i_0);
  Tset(App2("F",App0("B"),App2("G",App0("C"),App0("A"))));
  Ccall(_stratego_i_0);
  Tset(App2("F",App0("D"),App2("G",App0("D"),App0("A"))));
  Ccall(_stratego_i_0);
  Tset(App2("G",MakeInt(1),ATmakeString("a")));
  Ccall(_stratego_i_0);
PROCDECL(_stratego_a_4);
PROCDECL(_stratego_b_4);
PROCDECL(_stratego_c_4);
PROCDECL(_stratego_d_4);
PROCDECL(_stratego_e_4);
PROCDECL(_stratego_f_4);
PROCDECL(_stratego_g_4);
PROCDECL(_stratego_h_4);
PROCDECL(_stratego_i_4);
PROCDECL(_stratego_j_4);
PROCDECL(_stratego_k_4);
PROCDECL(_stratego_l_4);
PROCDECL(_stratego_m_4);

PROC(_stratego_init_afuns)
  MOVE(f_10,ATmakeAFun("Runtime",1,0));
  MOVE(w_9,ATmakeAFun("Silent",0,0));
  MOVE(i_9,ATmakeAFun("Binary",0,0));
  MOVE(w_8,ATmakeAFun("Output",1,0));
  MOVE(i_8,ATmakeAFun("Input",1,0));
  MOVE(w_7,ATmakeAFun("Program",1,0));
  MOVE(g_7,ATmakeAFun("Help",0,0));
  MOVE(c_7,ATmakeAFun("Undefined",1,0));
  MOVE(z_0,ATmakeAFun("Nil",0,0));
  MOVE(v_0,ATmakeAFun("TNil",0,0));
  MOVE(s_0,ATmakeAFun("A",0,0));
  MOVE(p_0,ATmakeAFun("TCons",2,0));
  MOVE(a_0,ATmakeAFun("Cons",2,0));
ENDPROC

PROC(_stratego_main)
Beispiel #17
0
PROCDECL(_stratego_g_5);
PROCDECL(_stratego_h_5);
PROCDECL(_stratego_i_5);
PROCDECL(_stratego_j_5);
PROCDECL(_stratego_k_5);
PROCDECL(_stratego_l_5);
PROCDECL(_stratego_m_5);
PROCDECL(_stratego_n_5);
PROCDECL(_stratego_o_5);
PROCDECL(_stratego_p_5);
PROCDECL(_stratego_q_5);
PROCDECL(_stratego_r_5);
PROCDECL(_stratego_s_5);

PROC(_stratego_init_afuns)
  MOVE(k_14,ATmakeAFun("Not",1,0));
  MOVE(g_13,ATmakeAFun("Or",2,0));
  MOVE(a_13,ATmakeAFun("And",2,0));
  MOVE(b_10,ATmakeAFun("Runtime",1,0));
  MOVE(s_9,ATmakeAFun("Silent",0,0));
  MOVE(b_9,ATmakeAFun("Binary",0,0));
  MOVE(o_8,ATmakeAFun("Output",1,0));
  MOVE(s_7,ATmakeAFun("Input",1,0));
  MOVE(e_7,ATmakeAFun("Program",1,0));
  MOVE(w_6,ATmakeAFun("Help",0,0));
  MOVE(s_6,ATmakeAFun("Undefined",1,0));
  MOVE(w_0,ATmakeAFun("Nil",0,0));
  MOVE(s_0,ATmakeAFun("TNil",0,0));
  MOVE(p_0,ATmakeAFun("TCons",2,0));
  MOVE(a_0,ATmakeAFun("Cons",2,0));
ENDPROC
Beispiel #18
0
ATTuple ATR_makeTuple(ATerm aterm1, ATerm aterm2) {
  return (ATTuple)ATmakeAppl2(ATmakeAFun("", 2, ATfalse), aterm1, aterm2);
}
#include <stratego-ext.h>

VARDECL(AFun,v_0);
VARDECL(AFun,d_0);
PROCDECL(_stratego_main);
PROCDECL(_stratego_s_3);
PROCDECL(_stratego_t_3);
PROCDECL(_stratego_u_3);
PROCDECL(_stratego_v_3);
PROCDECL(_stratego_w_3);
PROCDECL(_stratego_x_3);
PROCDECL(_stratego_y_3);
PROCDECL(_stratego_z_3);

PROC(_stratego_init_afuns)
  MOVE(v_0,ATmakeAFun("Nil",0,0));
  MOVE(d_0,ATmakeAFun("Cons",2,0));
ENDPROC

PROC(_stratego_main)
  Cpush(b_0);
  Epushd(0,1);
  Tset(App0("stdin"));
  Ccall(_stratego_s_3);
  TestFunTop(d_0);
  TravInit();
  OneNextSon();
  Epushd(1,1);
  MoveTop(1,1);
  NotNULLd(1,1);
  Tset(App1("Program",Egetd(1,1)));