cst_val* ru_lts_apply(const cst_val *input, const cst_lts_rewrites *rule) { cst_val *l=add_lts_boundary_marks(input); cst_val *output=lts_rewrites(l, rule); delete_val(l); return output; }
cst_val* ustring32_lts_apply(const ustring32_t u32,const cst_lts_rewrites *rule) { size_t n=ustring32_length(u32); if(n==0) return NULL; cst_val *l=cons_val(string_val("#"),NULL); uint8_t b[8]; size_t i=n; int k; do { i--; k=u8_uctomb(b,ustring32_at(u32,i),sizeof(b)); b[k]='\0'; l=cons_val(string_val((char*)b),l); } while(i); l=cons_val(string_val("#"),l); cst_val *output=lts_rewrites(l, rule); delete_val(l); return output; }
cst_val *lts_rewrites_word(const char *word, const cst_lts_rewrites *r) { cst_val *w, *p; char x[2]; int i; x[1] = '\0'; w = cons_val(string_val("#"),NULL); for (i=0; word[i]; i++) { x[0] = word[i]; w = cons_val(string_val(x),w); } w = cons_val(string_val("#"),w); w = val_reverse(w); p = lts_rewrites(w,r); delete_val(w); return p; }