From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lynn Winebarger Newsgroups: gmane.emacs.devel Subject: Re: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Date: Tue, 16 Aug 2022 13:40:21 -0400 Message-ID: References: <83o7wuva9o.fsf@gnu.org> <83mtceupbx.fsf@gnu.org> <83lerxvfnu.fsf@gnu.org> <838rnxvdcq.fsf@gnu.org> <83r11ptksn.fsf@gnu.org> <83a68dti6w.fsf@gnu.org> <87a687sjnv.fsf@yahoo.com> <83zgg4fm9p.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8684"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , luangruo@yahoo.com, jostein@secure.kjonigsen.net, jostein@kjonigsen.net, acm@muc.de, emacs-devel@gnu.org, casouri@gmail.com To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Aug 16 19:59:21 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oO0qV-00021z-VB for ged-emacs-devel@m.gmane-mx.org; Tue, 16 Aug 2022 19:59:19 +0200 Original-Received: from localhost ([::1]:38126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oO0qU-0003sl-V7 for ged-emacs-devel@m.gmane-mx.org; Tue, 16 Aug 2022 13:59:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37250) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oO0YQ-0002BH-EP for emacs-devel@gnu.org; Tue, 16 Aug 2022 13:40:39 -0400 Original-Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]:44954) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oO0YN-0003Fp-1H; Tue, 16 Aug 2022 13:40:36 -0400 Original-Received: by mail-pl1-x62b.google.com with SMTP id d16so9834195pll.11; Tue, 16 Aug 2022 10:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=Vqf8w6oexQVEbJLFGn2MI+vIvQvxdzX+svRc9fLnEho=; b=Cu2sc4T6Qb3RYTh/sZQLWz/UFr1wYbNK1U+UqZZbR5GmgQJZ2jjjrFN9v+993cj0bN hporEfcgh2fwZKMD8NlIQDJ3IjU4IP7Hqjr7SYVY8oYbtR2ygwRAO+d9YGBqEBMxp1Tn cSlN6wKK2lpj05QfhCP+t/dIR9tCzjSCGxamIN4aHkQtWG0qmnEfKyMwHO6SH8JAVHU8 QdqU+EtfAAGrnsbFbx6umRV4W+YNppZmmv47UXB+SR1Q3oC6iVUNscYMJY6SwGsCngxJ Ye/p+SQO63d+ZmOS7H1CquQHriL5tOSwF9RuqRYjgOTNnINU1juRuR1mv0GHHluHI2Je 1rJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=Vqf8w6oexQVEbJLFGn2MI+vIvQvxdzX+svRc9fLnEho=; b=vQWpdpzoNqV3cuAStH3CSp4e5PeDqUfYUEqs2+MvO3mbIxRiF+sVyRDtGuML9bU5qx 8+vwWQFjISkVIqliEYId2kFZF6qJOoYIpgYCJVrv7r5iWHxML2lWwvt1rnKJHgWyYgOG wlV9PWSY2SsXDlC434DZNAGQC0Azy9zfEQu0IVRMwtWzWaDlKiATlvjlu7uVk9EbUdEx rfxAdTMGP1wf9lCP8dWTRLShDp3/mTiYkpEKosPXeJ0hjUvlz2BF+KUxs6RyVxv4kgvm uJK4p6gkbsIQpoYnhIa08LO101XOD31mciotn79heD94TjrZZtDvzcuKMzd0G6hNTzMw RnJA== X-Gm-Message-State: ACgBeo2MXG6o/s0s2o4D9R3o7YSKycRFWCjhU2xDTziknfkiE7YzaH3m Vcq2blrDEOpRyFMVHYZWW5hISeA2HBhbvjCa1ug= X-Google-Smtp-Source: AA6agR7sMquErKZdYWyyyv7wXDaAixFpaYtdHu734fJkKRNX8yrAS57WkRF9EkR67LlPQrEsHyUmFBbX2oAcBCccS00= X-Received: by 2002:a17:902:ce11:b0:172:6f2c:a910 with SMTP id k17-20020a170902ce1100b001726f2ca910mr11177968plg.156.1660671633390; Tue, 16 Aug 2022 10:40:33 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=owinebar@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:293512 Archived-At: On Tue, Aug 16, 2022 at 1:19 PM Stefan Monnier wrote: > > > I'm only saying there's a disconnect between Jostein's report and Po's > > response. It's probably a UI issue. There's a checkbox in a dropdown > > menu that says "Source Code Parsers (Semantic)". > > FWIW, I've used (semantic-mode 1) to enable CEDET in Emacs's C source > files and that was all that was needed to get TAB completion of struct > field's names working. > I haven't used it for much more than that, admittedly. It also works for me, but I also have been mostly looking at Emacs source with it, and Semantic knows how to use the TAGS file for context-sensitive completion in C. And something is working gangbusters in Elisp, but unfortunately I can't really identify which package is doing the work. > > * "${" and "{" could both open a block closed by "}" > > Why do you think it's a problem? If you want the lexer to tokenize the ${ as a symbol while still recognizing the text in between as delimited, it seems like a problem. I mean, I already deal with that in ordinary font-lock, I was hoping the parser/lexer generation would address the issue independently of syntax tables. > > > * if/fi, case/esac, etc, or possibly all keyword blocks are closed by "end" > > These aren't handled by syntax tables. > > > * "variadic" structures like try/catch+/finally? > > Same. > I know they aren't. > > It's not clear from the doc just how much this reliance on the syntax > > table based block identification is baked into the lexer/parser > > generation. > > IIRC the syntax-tables are used for speed so as to skip whole blocks > without fully parsing their contents. As I wrote, I'm not sure how baked into the parser/lexer generation these special token types are, and if blocks are used for things like error recovery or limiting the scope where the syntactic structure is either illegal or incomplete. That's part of the selling point of the design. I can make the necessary modifications for myself, but if it was already in Semantic I could make use of it immediately without having to worry about these copyright assignment issues. Lynn