From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] master 9dcf599: Amend parse-partial-sexp correctly to handle two character comment delimiters Date: Sun, 20 Mar 2016 14:40:18 +0000 Message-ID: <20160320144018.GC3603@acm.fritz.box> References: <20160320132125.5713.70103@vcs.savannah.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1458484679 17562 80.91.229.3 (20 Mar 2016 14:37:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 20 Mar 2016 14:37:59 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: John Wiegley Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Mar 20 15:37:51 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aheUI-0004IH-VY for ged-emacs-devel@m.gmane.org; Sun, 20 Mar 2016 15:37:51 +0100 Original-Received: from localhost ([::1]:53166 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aheUI-0004lx-8v for ged-emacs-devel@m.gmane.org; Sun, 20 Mar 2016 10:37:50 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40366) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aheU5-0004lW-N5 for emacs-devel@gnu.org; Sun, 20 Mar 2016 10:37:38 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aheU2-0001Ud-HC for emacs-devel@gnu.org; Sun, 20 Mar 2016 10:37:37 -0400 Original-Received: from mail.muc.de ([193.149.48.3]:29141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aheU2-0001UC-B6 for emacs-devel@gnu.org; Sun, 20 Mar 2016 10:37:34 -0400 Original-Received: (qmail 36878 invoked by uid 3782); 20 Mar 2016 14:37:31 -0000 Original-Received: from acm.muc.de (p5B146DE7.dip0.t-ipconnect.de [91.20.109.231]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 20 Mar 2016 15:37:30 +0100 Original-Received: (qmail 4361 invoked by uid 1000); 20 Mar 2016 14:40:18 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Delivery-Agent: TMDA/1.1.12 (Macallan) X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x X-Received-From: 193.149.48.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:201935 Archived-At: Hello, John. On Sun, Mar 20, 2016 at 09:47:58AM -0400, Stefan Monnier wrote: > What was John's opinion on reusing nth 5? > Stefan Yes John, what is your opinion on reusing element 5 of the parser state? Background: The previous edition of `parse-partial-sexp' returned a ten-element list which could be used for continuing that parse. Unfortunately, this list was incomplete, leading to errors when the parse had stopped in the middle of a two-character comment delimiter. This is bug #23019. My patch, created with Stefan's help, has solved this bug, partly by adding another element onto the parser state. But this new element leaves element 5 ("t when just after an escape character") redundant. Stefan is in favour of reusing position 5 for this new element, rather than adding it at the end of the state (which has just been done). I am against this, though not strongly. It might have some effects on existing code, though this is not particularly likely. What do you say? -- Alan Mackenzie (Nuremberg, Germany). > >>>>> "Alan" == Alan Mackenzie writes: > > branch: master > > commit 9dcf5998935c8aaa846d7585b81f0dcfe1935b3d > > Author: Alan Mackenzie > > Commit: Alan Mackenzie > > Amend parse-partial-sexp correctly to handle two character comment delimiters > > Do this by adding a new field to the parser state: the syntax of the last > > character scanned, should that be the first char of a (potential) two char > > construct, nil otherwise. > > This should make the parser state complete. > > Also document element 9 of the parser state. Also refactor the code a bit. > > * src/syntax.c (struct lisp_parse_state): Add a new field. > > (SYNTAX_FLAGS_COMSTARTEND_FIRST): New function. > > (internalize_parse_state): New function, extracted from scan_sexps_forward. > > (back_comment): Call internalize_parse_state. > > (forw_comment): Return the syntax of the last character scanned to the caller > > when that character might be the first of a two character construct. > > (Fforward_comment, scan_lists): New dummy variables, passed to forw_comment. > > (scan_sexps_forward): Remove a redundant state parameter. Access all `state' > > information via the address parameter `state'. Remove the code which converts > > from external to internal form of `state'. Access buffer contents only from > > `from' onwards. Reformulate code at the top of the main loop correctly to > > recognize comment openers when starting in the middle of one. Call > > forw_comment with extra argument (for return of syntax value of possible first > > char of a two char construct). > > (Fparse_partial_sexp): Document elements 9, 10 of the parser state in the > > doc string. Clarify the doc string in general. Call > > internalize_parse_state. Take account of the new elements when consing up the > > output parser state. > > * doc/lispref/syntax.texi: (Parser State): Document element 9 and the new > > element 10. Minor wording corrections (remove reference to "trivial > > cases"). > > (Low Level Parsing): Minor corrections. > > * etc/NEWS: Note new element 10, and documentation of element 9 of parser > > state.