emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lisp parser broken


From: Andreas Schwab
Subject: Re: Lisp parser broken
Date: Tue, 18 Feb 2003 16:56:29 +0100
User-agent: Gnus/5.090015 (Oort Gnus v0.15) Emacs/21.3.50

Juanma Barranquero <address@hidden> writes:

|> On Tue, 18 Feb 2003 16:01:45 +0100, Andreas Schwab <address@hidden> wrote:
|> 
|> > The latest changes in the lisp parser cause cc-vars.el to be misparsed, in
|> > particular the body of the defmacro defcustom-c-stylevar.  Previously the
|> > expression `(a `(` a)) was parsed as (\` (a (\` (\` a)))), now it is
|> > parsed as (\` (a (\` ( (\` a))))).  Note that there is a symbol with an
|> > empty name after the fourth open paren.
|> 
|> I've checked in patches, including one for cc-vars.el, that allow Emacs
|> to bootstrap. Not sure mine's the right fix for `defcustom-c-stylevar',
|> though.

I still think the bug is in the parser.  The symbol with the empty name
must not be there.  I'll check in the following change shortly if nobody
comes up with a better fix:

2003-02-18  Andreas Schwab  <address@hidden>

        * lread.c (read1): Don't forbid "`" and "," in a symbol.

--- src/lread.c.~1.307.~        2003-02-18 13:07:17.000000000 +0100
+++ src/lread.c 2003-02-18 16:08:19.000000000 +0100
@@ -2458,8 +2458,7 @@ read1 (readcharfun, pch, first_in_list)
          char *end = read_buffer + read_buffer_size;
 
          while (c > 040
-                && !index ("\"'`;()[]#", c)
-                && !(new_backquote_flag && c == ','))
+                && !index ("\"';()[]#", c))
            {
              if (end - p < MAX_MULTIBYTE_LENGTH)
                {

Andreas.

-- 
Andreas Schwab, SuSE Labs, address@hidden
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."




reply via email to

[Prev in Thread] Current Thread [Next in Thread]