vincent@lemur.inria.fr (Vincent Bouthors) (10/31/90)
Description: ----------- In translation table, action parameters are strings. It is possible to put in them an expression to evaluate with the appropriate interpretor. eg: <Btn1Down>: ExecuteC("MapWidget(shell3);") \n\ The problem is that it is not possible, today, to use the quote character to delimit a string litteral. It seems rather raisonable to provide an escape sequence to do that. eg: <Btn1Down>: ExecuteC("DisplayMessage(\"Hello world\");") \n\ In fact, the resource manager treats '\'. So it is necessary to protect '\' character inserting another '\'. eg: <Btn1Down>: ExecuteC("DisplayMessage(\\"Hello world\\");") \n\ Proposal: Modification of format described in Appendix B -------- Today it is writen: quoted_string = """ { <Latin 1 character> } """ But we should understand: quoted_string = """ { <Latin 1 character except """> } """ And here is my proposal: quoted_string = """ { <Latin 1 character except """, "\"> | "\"" } """ description: the two characters '\' '"' are placed unchanged in the quoted string. Code: This is a very simple modification. ---- File: TMparse.c Function: ParseString *************** *** 1550,1556 **** if (*str == '"') { str++; start = str; ! while (*str != '"' && *str != '\0' && *str != '\n') str++; *strP = strncpy(XtMalloc((unsigned)(str-start+1)), start, str-start); (*strP)[str-start] = '\0'; if (*str == '"') str++; else --- 1550,1562 ---- if (*str == '"') { str++; start = str; ! while (*str != '"' && *str != '\0' && *str != '\n') { ! if (*str == '\\') { ! str++; ! if (*str != '\0' && *str != '\n') str++; ! } ! str++; ! } *strP = strncpy(XtMalloc((unsigned)(str-start+1)), start, str-start); (*strP)[str-start] = '\0'; if (*str == '"') str++; else -- Vincent BOUTHORS e-mail: Vincent.Bouthors@mirsa.inria.fr BULL research center c/o INRIA phone: 93.65.78.15 2004 route des lucioles telex: 960050F 06565 VALBONNES cedex fax: 93.65.77.66 FRANCE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -