[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#59468: 29.0.50; c-ts-mode cannot fontify after macros are encounter
From: |
Yuan Fu |
Subject: |
bug#59468: 29.0.50; c-ts-mode cannot fontify after macros are encountered |
Date: |
Tue, 22 Nov 2022 20:13:49 -0800 |
> On Nov 22, 2022, at 7:30 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>
>> Cc: 59468@debbugs.gnu.org
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Tue, 22 Nov 2022 12:11:17 -0800
>>
>> I’m not even sure the author of tree-sitter-c would accept changes that
>> try to parse macros: he has made it clear that the purpose of
>> tree-sitter-c is to support post-processed C and leave macros and
>> preprocessor to error-recovery.
>
> What do you mean by "error-recovery"?
Basically if tree-sitter encounters something that doesn’t comply to the
grammar, it tries to skip a number of tokens, and parse the rest of the file
normally. This way any error is localized and the rest of the file can still be
parsed. It could also insert “missing nodes” to the tree (eg, a missing
parentheses) if that works better than skipping tokens. Those tokens that are
skipped are put under an ERROR node, to indicated that they are skipped and
normally shouldn’t be there in well-formed text.
> Is it possible to do something on our end for processing the error nodes,
> which would remedy the issue with macros? Or maybe some other way of
> handling the macros by ourselves?
For each of the ERROR nodes, we can look at the skipped tokens inside, and look
around with some regex searching. That would take some non-trivial effort, I
imagine.
Yuan
bug#59468: 29.0.50; c-ts-mode cannot fontify after macros are encountered, Yuan Fu, 2022/11/23
bug#59468: 29.0.50; c-ts-mode cannot fontify after macros are encountered, Yuan Fu, 2022/11/23