/** * parse top level declarations * @param stclass storage * @param mtag * @param is_struct * @return */ int do_declarations(int stclass, TAG_SYMBOL *mtag, int is_struct) { int type; int otag; // tag of struct object being declared int sflag; // TRUE for struct definition, zero for union char sname[NAMESIZE]; int ns = 0; blanks(); if ((sflag=amatch("struct", 6)) || amatch("union", 5)) { if (symname(sname) == 0) { // legal name ? illname(); } if ((otag=find_tag(sname)) == -1) { // structure not previously defined otag = define_struct(sname, stclass, sflag); } declare_global(STRUCT, stclass, mtag, otag, is_struct); } else if ((type = get_type()) != 1) { ns = declare_global(type, stclass, mtag, 0, is_struct); } else if (stclass == PUBLIC) { return (0); } else { ns = declare_global(CINT, stclass, mtag, 0, is_struct); } if (!ns) need_semicolon(); return (1); }
extern void libml_init(void) { declare_global("external ml values",&external_ml_values, GLOBAL_DEFAULT,NULL,NULL,NULL); env_function("add external ml value", add_external_ml_value); env_function("delete external ml value", delete_external_ml_value); env_function("external ml value names", external_ml_value_names); env_function("clear external ml values", clear_external_ml_values); }