From: Eric Ludlam <ericludlam@gmail.com>
To: Lynn Winebarger <owinebar@gmail.com>,
Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Eli Zaretskii <eliz@gnu.org>,
luangruo@yahoo.com, jostein@secure.kjonigsen.net,
jostein@kjonigsen.net, acm@muc.de, emacs-devel@gnu.org,
casouri@gmail.com
Subject: Re: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)
Date: Tue, 16 Aug 2022 21:41:09 -0400 [thread overview]
Message-ID: <e6d58072-6eb0-9557-209e-02d0d0c02a94@siege-engine.com> (raw)
In-Reply-To: <CAM=F=bCHrXTeT6XrVNk=vO+wbB4aD4rFLb_C-wLwKk3yqO1JKQ@mail.gmail.com>
On 8/16/22 1:40 PM, Lynn Winebarger wrote:
> On Tue, Aug 16, 2022 at 1:19 PM Stefan Monnier <monnier@iro.umontreal.ca> 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.
Lexers are built per-language from a set of analyzers. Thus, you call
(define-lex ...) and list a bunch of analyzers, which are created with
`define-lex-analyzer' or one of the variants.
The analyzers mostly use regular expressions, and when possible, uses
expressions that use the syntax table because they are quite fast. If
you restrict yourself to the built-in named lexer analyzers, like
'semantic-lex-whitespace', then that is what they are, but you can use
`define-lex-analyzer' or `define-lex-regex-analyzer' and write any code
you want to do a match, push a token, and find the end point. The C
lexer/parser does this a lot.
For a very simple case like matching ${:
(define-lex-simple-regex-analyzer my-dollar-curly
"doc string"
"\\$\\{" 'dollar-curly)
and then put this in front of the { } block analyzer when you build up
your lexer.
Eric
next prev parent reply other threads:[~2022-08-17 1:41 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-06 20:13 Major modes using `widen' is a good, even essential, programming practice Alan Mackenzie
2022-08-06 21:05 ` Stefan Monnier
2022-08-07 6:03 ` Eli Zaretskii
2022-08-07 13:31 ` Gregory Heytings
2022-08-07 14:13 ` Alan Mackenzie
2022-08-07 14:20 ` Eli Zaretskii
2022-08-07 14:59 ` Alan Mackenzie
2022-08-07 15:13 ` Eli Zaretskii
2022-08-07 17:01 ` Alan Mackenzie
2022-08-07 17:23 ` Eli Zaretskii
2022-08-07 17:53 ` Dmitry Gutov
2022-08-07 18:00 ` Eli Zaretskii
2022-08-07 18:05 ` Dmitry Gutov
2022-08-07 18:37 ` Eli Zaretskii
2022-08-07 23:02 ` Stefan Monnier
2022-08-07 18:49 ` Óscar Fuentes
2022-08-07 18:59 ` Eli Zaretskii
2022-08-07 18:56 ` Lars Ingebrigtsen
2022-08-07 19:20 ` Alan Mackenzie
2022-08-07 19:26 ` Dmitry Gutov
2022-08-08 2:36 ` Eli Zaretskii
2022-08-08 9:58 ` Alan Mackenzie
2022-08-08 11:39 ` Eli Zaretskii
2022-08-08 15:05 ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Alan Mackenzie
2022-08-08 15:51 ` Gregory Heytings
2022-08-08 16:05 ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 16:50 ` Gregory Heytings
2022-08-09 19:49 ` Gregory Heytings
2022-08-08 17:15 ` CC Mode with font-lock-maximum-decoration 2 [Was Major modes using `widen' is a good, even essential, programming practice.] Eli Zaretskii
2022-08-08 17:41 ` Eli Zaretskii
2022-08-08 18:41 ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-08 18:51 ` Eli Zaretskii
2022-08-08 19:09 ` Alan Mackenzie
2022-08-09 2:24 ` Eli Zaretskii
2022-08-09 8:00 ` Alan Mackenzie
2022-08-09 11:07 ` Eli Zaretskii
2022-08-09 11:24 ` Alan Mackenzie
2022-08-09 11:57 ` Eli Zaretskii
2022-08-09 16:36 ` Alan Mackenzie
2022-08-09 16:59 ` Eli Zaretskii
2022-08-09 17:43 ` Alan Mackenzie
2022-08-09 17:55 ` Eli Zaretskii
2022-08-10 0:22 ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Lynn Winebarger
2022-08-10 2:14 ` Po Lu
2022-08-10 2:42 ` Eli Zaretskii
2022-08-10 10:05 ` Lynn Winebarger
2022-08-10 10:49 ` Po Lu
2022-08-10 11:31 ` Eli Zaretskii
2022-08-12 12:37 ` Lynn Winebarger
2022-08-12 12:50 ` Eli Zaretskii
2022-08-12 21:50 ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Stefan Monnier
2022-08-12 23:26 ` Lynn Winebarger
2022-08-13 2:11 ` Ideal performance of ELisp Stefan Monnier
2022-08-13 10:51 ` Lynn Winebarger
2022-08-13 11:13 ` Lynn Winebarger
2022-08-13 14:07 ` Stefan Monnier
2022-08-13 14:56 ` Lynn Winebarger
2022-08-16 16:46 ` Lynn Winebarger
2022-08-16 17:22 ` Stefan Monnier
2022-08-17 12:41 ` Lynn Winebarger
2022-08-17 14:04 ` Stefan Monnier
2022-08-17 14:19 ` Mattias Engdegård
2022-08-17 22:18 ` Stefan Monnier
2022-08-17 14:25 ` Lynn Winebarger
2022-08-13 4:39 ` Ideal performance of ELisp (was: Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2)) Ihor Radchenko
2022-08-13 7:45 ` Ideal performance of ELisp Philip Kaludercic
2022-08-13 11:58 ` Ihor Radchenko
2022-08-13 14:15 ` Stefan Monnier
2022-08-14 9:25 ` Andrea Corallo
2022-08-14 9:34 ` Ihor Radchenko
2022-08-14 13:01 ` Eli Zaretskii
2022-08-16 19:23 ` Andrea Corallo
2022-08-14 13:01 ` Stefan Monnier
2022-08-16 8:59 ` Andrea Corallo
2022-08-16 9:50 ` Ihor Radchenko
2022-08-16 18:21 ` Andrea Corallo
2022-08-17 9:48 ` Ihor Radchenko
2022-08-17 12:02 ` Eli Zaretskii
2022-08-16 15:06 ` Lynn Winebarger
2022-08-16 18:24 ` Andrea Corallo
2022-08-17 13:04 ` Lynn Winebarger
2022-08-17 14:18 ` Andrea Corallo
2022-08-18 12:17 ` Lynn Winebarger
2022-08-12 16:00 ` Why tree-sitter instead of Semantic? (was Re: CC Mode with font-lock-maximum-decoration 2) Akib Azmain Turja
2022-08-12 19:06 ` tomas
2022-08-13 4:41 ` Akib Azmain Turja
2022-08-13 5:14 ` tomas
2022-08-13 11:57 ` Lynn Winebarger
2022-08-13 14:28 ` Akib Azmain Turja
2022-08-14 19:24 ` Eric Ludlam
2022-08-16 10:42 ` Lynn Winebarger
2022-08-17 1:56 ` Eric Ludlam
2022-08-10 17:03 ` Tassilo Horn
2022-08-13 14:40 ` Jostein Kjønigsen
2022-08-14 1:23 ` Po Lu
2022-08-16 9:06 ` Lynn Winebarger
2022-08-16 11:05 ` Po Lu
2022-08-16 11:41 ` Eli Zaretskii
2022-08-16 16:33 ` Lynn Winebarger
2022-08-16 17:19 ` Stefan Monnier
2022-08-16 17:40 ` Lynn Winebarger
2022-08-17 1:41 ` Eric Ludlam [this message]
2022-08-18 12:34 ` Lynn Winebarger
2022-08-20 13:15 ` Eric Ludlam
2022-08-08 18:20 ` CC Mode with font-lock-maximum-decoration 2 Alan Mackenzie
2022-08-07 20:17 ` Major modes using `widen' is a good, even essential, programming practice Gregory Heytings
2022-08-07 20:46 ` Alan Mackenzie
2022-08-07 20:53 ` Gregory Heytings
2022-08-08 2:37 ` Eli Zaretskii
2022-08-08 10:33 ` Alan Mackenzie
2022-08-08 11:41 ` Eli Zaretskii
2022-08-07 23:21 ` Stefan Monnier
2022-08-08 2:29 ` Eli Zaretskii
2022-08-08 9:25 ` Stefan Monnier
2022-08-08 11:16 ` Lynn Winebarger
2022-08-08 11:47 ` Eli Zaretskii
2022-08-08 14:24 ` Lynn Winebarger
2022-08-08 11:30 ` Eli Zaretskii
2022-08-08 12:05 ` Stefan Monnier
2022-08-08 12:40 ` Eli Zaretskii
2022-08-08 17:22 ` Stefan Monnier
2022-08-08 17:34 ` Eli Zaretskii
2022-08-08 21:16 ` Dmitry Gutov
2022-08-09 11:30 ` Eli Zaretskii
2022-08-09 14:38 ` Dmitry Gutov
2022-08-09 16:12 ` Eli Zaretskii
2022-08-09 16:52 ` Dmitry Gutov
2022-08-09 17:05 ` Eli Zaretskii
2022-08-09 18:52 ` Dmitry Gutov
2022-08-09 19:46 ` Gregory Heytings
2022-08-08 10:38 ` Alan Mackenzie
2022-08-08 11:49 ` Eli Zaretskii
2022-08-08 10:41 ` Gregory Heytings
2022-08-07 17:57 ` Dmitry Gutov
2022-08-22 11:26 ` Alan Mackenzie
2022-08-22 23:59 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6d58072-6eb0-9557-209e-02d0d0c02a94@siege-engine.com \
--to=ericludlam@gmail.com \
--cc=acm@muc.de \
--cc=casouri@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=jostein@kjonigsen.net \
--cc=jostein@secure.kjonigsen.net \
--cc=luangruo@yahoo.com \
--cc=monnier@iro.umontreal.ca \
--cc=owinebar@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).