Files
SAPFOR/projects/dvm/fdvm/trunk/parser/lists.c
2025-03-12 14:28:04 +03:00

109 lines
2.5 KiB
C

/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
#include <stdio.h>
#include "defs.h"
#include "bif.h"
#include "ll.h"
#include "symb.h"
#include "db.h"
extern PTR_TYPE global_default;
extern PTR_LLND make_llnd();
extern PTR_FILE fi;
void errstr();
/*
* set_ll_list attaches a new node to a given old_list and
* makes sure that the old_list is of the same type as ll_type
*/
PTR_LLND
set_ll_list(old_list, node, ll_type)
PTR_LLND old_list, node;
int ll_type;
{
register PTR_LLND temp, new;
if (!node) { /* the first item in the list */
new = make_llnd(fi,ll_type, old_list, LLNULL, SMNULL);
new->type = global_default;
return (new);
}
if (old_list->variant != ll_type) { /* first two items */
new = make_llnd(fi,ll_type, old_list,
make_llnd(fi,ll_type, node, LLNULL, SMNULL),
SMNULL);
new->type = global_default;
new->entry.Template.ll_ptr2->type = global_default;
return (new);
}
new = make_llnd(fi,ll_type, node, LLNULL, SMNULL);
for (temp = old_list;
temp->entry.Template.ll_ptr2;
temp = temp->entry.Template.ll_ptr2)
;
temp->entry.Template.ll_ptr2 = new;
new->type = global_default;
return (old_list);
}
/*
* set_id_list takes an old id list and runs down the list attaching new
* id at the end
*/
PTR_SYMB
set_id_list(old_list, id)
PTR_SYMB old_list, id;
{
register PTR_SYMB temp;
if (!id)
return (old_list);
if(id->id_list) {
errstr("'%s' is a duplicate dummy argument",id->ident,121); /*podd 9.03.00*/
return(old_list);
}
for (temp = old_list; temp->id_list; temp = temp->id_list)
;
temp->id_list = id;
return (old_list);
}
PTR_LLND
add_to_lowLevelList(ele, oldList)
PTR_LLND ele, oldList;
{
register PTR_LLND temp;
if (!ele)
return (oldList);
for (temp = oldList; temp->entry.list.next; temp = temp->entry.list.next)
;
temp->entry.list.next = ele;
return (oldList);
}
PTR_LLND
add_to_lowList(ele, oldList)
PTR_LLND ele, oldList;
{
register PTR_LLND temp;
if (!ele)
return (oldList);
for (temp = oldList; temp->entry.Template.ll_ptr2; temp = temp->entry.Template.ll_ptr2)
;
temp->entry.Template.ll_ptr2 = ele;
return (oldList);
}