} else if (*lptr=='\"' || *lptr=='#' || *lptr==sc_ctrlchar && (*(lptr+1)=='\"' || *(lptr+1)=='#')) { /* unpacked string literal */ _lextok=tSTRING; stringflags= (*lptr==sc_ctrlchar) ? RAWMODE : 0; stringflags |= (*lptr=='#' || *(lptr+1)=='#') ? STRINGIZE : 0; *lexvalue=_lexval=litidx; lptr+=1; /* skip double quote */ if ((stringflags & RAWMODE)!=0) lptr+=1; /* skip "escape" character too */ lptr=sc_packstr ? packedstring(lptr,&stringflags) : unpackedstring(lptr,&stringflags); if (*lptr=='\"') lptr+=1; /* skip final quote */ else if (!(stringflags & STRINGIZE)) error(37); /* invalid (non-terminated) string */ } else if (*lptr=='!' && (*(lptr+1)=='\"' || *(lptr+1)=='#') || *lptr=='!' && *(lptr+1)==sc_ctrlchar && (*(lptr+2)=='\"' || *(lptr+2)=='#') || *lptr==sc_ctrlchar && *(lptr+1)=='!' && (*(lptr+2)=='\"' || *(lptr+2)=='#')) { /* packed string literal */ _lextok=tSTRING; stringflags= (*lptr==sc_ctrlchar || *(lptr+1)==sc_ctrlchar) ? RAWMODE : 0; stringflags |= (*(lptr+1)=='#' || *(lptr+2)=='#') ? STRINGIZE : 0; *lexvalue=_lexval=litidx; lptr+=2; /* skip exclamation point and double quote */ if ((stringflags & RAWMODE)!=0) lptr+=1; /* skip "escape" character too */ lptr=sc_packstr ? unpackedstring(lptr,&stringflags) : packedstring(lptr,&stringflags); if (*lptr=='\"') lptr+=1; /* skip final quote */ else if (!(stringflags & STRINGIZE)) error(37); /* invalid (non-terminated) string */ } else if (*lptr=='\'') { /* character literal */