From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stephen Leake Newsgroups: gmane.emacs.devel Subject: Re: Tree Sitter (was Re: cc-mode fontification feels random) Date: Sun, 25 Jul 2021 09:13:58 -0700 Message-ID: <86eebm8j7d.fsf@stephe-leake.org> References: <83o8cge4lg.fsf@gnu.org> <62e438b5-d27f-1d3c-69c6-11fe29a76d74@dancol.org> <83fsxsdxhu.fsf@gnu.org> <179f22a44d8.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <179f38c0370.2816.cc5b3318d7e9908e2c46732289705cb0@dancol.org> <236e62c2-be9b-b26d-8cd0-4b5a1a86e19a@dancol.org> <86mtqsoh3f.fsf@stephe-leake.org> <286d815e-d1a1-07ca-6696-a7f51923ab4e@piermont.com> <86wnpl6f0y.fsf@stephe-leake.org> <865yx45y7g.fsf@stephe-leake.org> <146b72ac-0446-93ba-f85c-b8987e96f0d0@piermont.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39070"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (windows-nt) Cc: emacs-devel@gnu.org, "Perry E. Metzger" To: Richard Stallman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Jul 25 18:14:41 2021 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 1m7gm0-0009yB-NB for ged-emacs-devel@m.gmane-mx.org; Sun, 25 Jul 2021 18:14:41 +0200 Original-Received: from localhost ([::1]:40508 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m7glz-0000vc-AW for ged-emacs-devel@m.gmane-mx.org; Sun, 25 Jul 2021 12:14:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m7glS-0000FI-KD for emacs-devel@gnu.org; Sun, 25 Jul 2021 12:14:06 -0400 Original-Received: from gateway32.websitewelcome.com ([192.185.145.115]:44540) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m7glQ-0005Xx-GC for emacs-devel@gnu.org; Sun, 25 Jul 2021 12:14:06 -0400 Original-Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway32.websitewelcome.com (Postfix) with ESMTP id 87EB0839AD8 for ; Sun, 25 Jul 2021 11:14:00 -0500 (CDT) Original-Received: from host2007.hostmonster.com ([67.20.76.71]) by cmsmtp with SMTP id 7glMmu3pKrJtZ7glMmfpWb; Sun, 25 Jul 2021 11:14:00 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=stephe-leake.org; s=default; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=bT3cxpJqC2F0X27hpAcOr1177z40daorrXpm47wyNqI=; b=HOyXtZUskeH8aPMoc6MPipooQ9 mQhOlXbn1SxF/lgjAHXuYepCAySvh1icrtxxB68fFcXIyqMmrh+gaiUGqWB0dXF8qvyj5vJ7jFTb+ 32DGf8WSEqmsfW3/mk8oD9C1VQ0YviGb9CFYVLN7McbCyMMywjogHRly9GtZMRLSOJOKIgTWbvJIV pS5km5pHnQvPvfcrYopFDcb9wiXlbRrhb5wz6a1nWn/W3LXlMGv4uio/pxl8Tm10PpLIUlI0uurRT HikWsR3n4fN3hOmFc1HWE9kNK9J5I64jPZ/SHKRB9J8CNiYaGAHOuuGKqHvxsSK0XmTsGfHxzvtvu jhy7hBzg==; Original-Received: from [76.77.182.20] (port=56997 helo=Takver4) by host2007.hostmonster.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1m7glL-003Dva-SE; Sun, 25 Jul 2021 10:13:59 -0600 In-Reply-To: (Richard Stallman's message of "Fri, 23 Jul 2021 21:17:02 -0400") X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - host2007.hostmonster.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - stephe-leake.org X-BWhitelist: no X-Source-IP: 76.77.182.20 X-Source-L: No X-Exim-ID: 1m7glL-003Dva-SE X-Source-Sender: (Takver4) [76.77.182.20]:56997 X-Source-Auth: stephen_leake@stephe-leake.org X-Email-Count: 3 X-Source-Cap: c3RlcGhlbGU7c3RlcGhlbGU7aG9zdDIwMDcuaG9zdG1vbnN0ZXIuY29t X-Local-Domain: yes Received-SPF: permerror client-ip=192.185.145.115; envelope-from=stephen_leake@stephe-leake.org; helo=gateway32.websitewelcome.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NEUTRAL=0.779 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:271613 Archived-At: Richard Stallman writes: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > The features that the DoD liked so much about Ada, to me make it feel > very clunky. You have to declare so much! Yes, and then the compiler checks everything for you, so the code is much more likely to be correct before you start testing. It also helps when modifying/extending code; if it doesn't compile, you've done something wrong, and the error messages point to what to fix. In addition, SPARK (https://www.adacore.com/sparkpro) is a formal proof system designed for Ada, giving you even more power to build programs that are correct. A long time ago, I was working on a system that was programmed in C++. I re-implemented it in Ada; it was pretty clear that I could write correct code at least 4 times faster in Ada than in C++. Now I only write code in something other than Ada if there is no way to use Ada (for example, my music app on Android is in Java; it's nominally possible to write Ada code for Android, but it takes a _lot_ of work, and would break with every new release of Android). > What advantages does wisi.el's Ada module have over Tree Sitter? That's not entirely clear yet. I believe the error recovery in wisi is more powerful than tree-sitter's, but I'm probably biased, and it's hard to come up with a good objective metric until we get both fully integrated into Emacs. It is clear that good error recovery is essential to implementing indentation using a parser; tree-sitter is not advertised as supporting indentation, while indentation is a primary purpose of wisi. The parser generator in wisi is more powerful in some ways; it can handle LR1 table generation for Ada, using a grammar that closely follows the grammar in the Ada Language Reference Manual; tree-sitter can't handle that. tree-sitter could probably handle it if someone spends time simplifying/optimizing the grammar. The tree-sitter parser generator allows specifying token precedence to resolve grammar conflicts; wisi has no support for that (it could be added). tree-sitter has been around for a while, and there are many people and editors using it and working on it. wisi is just me working on it, and Emacs using it for ada-mode. tree-sitter also provides bindings to the parser for other languages. That is possible with wisi, but I don't have the bandwidth for it. -- -- Stephe