Index: /trunk/src/kash/parser.c
===================================================================
--- /trunk/src/kash/parser.c	(revision 2627)
+++ /trunk/src/kash/parser.c	(revision 2628)
@@ -767,5 +767,5 @@
 	    TRACE((psh, "token %s %s\n", tokname[t], t == TWORD ? psh->wordtext : ""));
 	else
-	    TRACE((psh, "reread token %s %s\n", tokname[t], t == TWORD ? psh->wordtext : ""));
+	    TRACE((psh, "reread token %s \"%s\"\n", tokname[t], t == TWORD ? psh->wordtext : ""));
 #endif
 	return (t);
@@ -809,4 +809,5 @@
 	for (;;) {	/* until token or start of word found */
 		c = pgetc_macro(psh);
+trace(psh, "xxreadtoken: c=%#x", c);
 		if (c == ' ' || c == '\t')
 			continue;		/* quick check for white space first */
@@ -854,5 +855,5 @@
 		case ')':
 			RETURN(TRP);
-		default:
+                default:
 			goto breakloop;
 		}
@@ -1615,6 +1616,10 @@
 synerror(shinstance *psh, const char *msg)
 {
-	if (psh->commandname)
+	if (psh->commandname) {
+		trace(psh, "synerror: %s: %d: Syntax error: %s", psh->commandname, psh->startlinno, msg);
 		outfmt(&psh->errout, "%s: %d: ", psh->commandname, psh->startlinno);
+	} else {
+		trace(psh, "synerror: Syntax error: %s\n", msg);
+        }
 	outfmt(&psh->errout, "Syntax error: %s\n", msg);
 	error(psh, (char *)NULL);
