+
+ /* if new line we have a new line break, which is illegal */
+ if (ch == '\n') {
+ werror (W_NEWLINE_IN_STRING);
+ *str++ = '\n';
+ lineno=++yylineno;
+ column=0;
+ continue;
+ }
+
+ /* if this is a quote then we have work to do */
+ /* find the next non whitespace character */
+ /* if that is a double quote then carry on */
+ if (ch == '\"') {
+ *str++ = ch ; /* Pass end of this string or substring to evaluator */
+ while ((ch = input()) && (isspace(ch) || ch=='\\')) {
+ switch (ch) {
+ case '\\':
+ if ((ch=input())!='\n') {
+ werror (W_STRAY_BACKSLASH, column);
+ unput(ch);
+ } else {
+ lineno=++yylineno;
+ column=0;
+ }
+ break;
+ case '\n':
+ yylineno++;
+ break;
+ }
+ }