void atomic_type_list(){ atomic_type(); while (lookahead == ',') { match(','); atomic_type(); } }
/*Ritorna lo schema del type. Il puntatore allo schema successivo che sarà NULL nel caso di tipi semplici, e non nullo per tipi tabella*/ Pschema type(Pnode type_node){ #ifdef DEBUG_TYPE printf( "TYPE_NODE - enter\n"); #endif if (type_node->type == N_ATOMIC_TYPE) return atomic_type(type_node); else return table_type(type_node); }
void extend_op(){ match(UNARY_OP); match('['); atomic_type(); match(ID); match(ASSIGN); expr(); match(']'); }
/*Ritorno lo schema dell'attr_decl*/ Pschema attr_decl(Pnode attr_decl_node){ #ifdef DEBUG_ATTR_DECL printf( "ATTR_DECL - enter\n"); #endif //Prendo i due figli del nodo Pnode type_node = attr_decl_node->child; Pnode id_node = attr_decl_node->child->brother; //Analizzo il tipo Pschema schema = atomic_type(type_node); //Dall'id_node prendo il nome e lo aggiungo a schema schema->name = valname(id_node); #ifdef DEBUG_ATTR_DECL printf( "ATTR_DECL - exit\n"); #endif return schema; }
void attr_decl(){ atomic_type(); match(ID); }
void type(){ if (lookahead == INTEGER || lookahead == STRING || lookahead == BOOLEAN) atomic_type(); else table_type(); }
RAJA_HOST_DEVICE RAJA_INLINE atomic_type operator()(ARGS &&... args) const { return atomic_type(&base_.operator()(std::forward<ARGS>(args)...)); }