From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Tree-sitter integration on feature/tree-sitter Date: Sun, 08 May 2022 10:01:03 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8907"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: Eli Zaretskii , casouri@gmail.com, emacs-devel@gnu.org To: Theodor Thornhill Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun May 08 16:03:09 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 1nnhV6-00026e-RF for ged-emacs-devel@m.gmane-mx.org; Sun, 08 May 2022 16:03:09 +0200 Original-Received: from localhost ([::1]:45892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nnhV5-0001jz-QE for ged-emacs-devel@m.gmane-mx.org; Sun, 08 May 2022 10:03:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nnhTH-0000Ag-3o for emacs-devel@gnu.org; Sun, 08 May 2022 10:01:15 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:11264) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nnhTA-0007RU-8F; Sun, 08 May 2022 10:01:12 -0400 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 8B4304406A6; Sun, 8 May 2022 10:01:06 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 2ABDE440492; Sun, 8 May 2022 10:01:05 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1652018465; bh=tBnfLLR1Y3NoYRgX7byW3CNwrE0eUJnxCyKZGZhlv04=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=N9/HLWHpSjlCJCO5T9mjXxkvgxrvT3h4a/HvCLfpqMc+Ym674FK2zZelKccRPk4SJ VLKEjHtiNPM0RliQ/29JUMwHzoM3JIOgz+mc0meAG2pWWOkDeFKZJYAosgbD+OkS7L Pccl38WLcUaEaVMT8k3kFmiD79PL+OD/3XtYFlYIxL97uSzVYjAsRQxmwkT3dPM6pe tgRaPVzMCSKpJSISd2uGX1/aVd0p7PoTPPCjxLmXQKmX309OqVlu9q20wnKgvqc56M Xm5mQWWQyOqSRbGkSe5RgLPj9GzL8k2Ul/o8UuDM7A/V3Rf48INfEP33RNboQzGCAW yI8rKA+NF+3gA== Original-Received: from pastel (unknown [45.72.221.51]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id DB48F120202; Sun, 8 May 2022 10:01:04 -0400 (EDT) In-Reply-To: (Theodor Thornhill's message of "Sun, 08 May 2022 15:47:48 +0200") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, 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:289483 Archived-At: Theodor Thornhill [2022-05-08 15:47:48] wrote: > On 8 May 2022 12:33, Eli Zaretskii wrote: > > Date: Sun, 08 May 2022 11:19:31 +0200 > > From: Theodor Thornhill > > Cc: casouri@gmail.com, emacs-devel@gnu.org > > > > You need the parser on a path emacs can see. Either we need to implement some > generic parser > > installation functions in emacs, or we need this module or others like it. It compiles > the grammar and creates > > a shared object that is read by emacs tree sitter. This is the tedious and error prone > part. > > I don't understand. I thought tree-sitter itself was such a parser. > Why do we need another one as an Emacs module? > > Because the only implementation possible for emacs is the generic parser. It needs > specific parsers to be inserted. The two are orthogonal, but related. > > Emacs cannot and should not contain such parser binaries. They are os and architecture > specific. > > Also, this way the parsers can more easily be fixed > > Does that make sense? Not really, no. You might want to be more precise about what you mean by "parser" and explain what's the difference between the "generic parser" and more specific ones. By "specific parser" are you referring to something that I might call "compiled grammars"? The way I understand it, to use TS for a given language, you need: - The TS runtime (which should be included in Emacs if you use the corresponding feature branch and which include what I'd called "the incremental parser"). - The language's grammar. This is usually a .js file and is compiled to an .so file by the tree sitter tools. This is *not* included in the feature branch (neither the grammars nor the tools). - The glue in the major mode code. Stefan