[Qt-creator] SyntaxHighlighting + Bison/FLex

JeremY Larrieu adrenalinedj at gmail.com
Thu Nov 23 10:26:20 CET 2017


Hello

@Eike that's exactly what I wanna do. But I don't know where I can connect
tout this signals and the "highlightBlock" method doesn't provide the line
number to highlight nor from which file the line comes from.

Jeremy

Le 23 nov. 2017 10:06, "JeremY Larrieu" <adrenalinedj at gmail.com> a écrit :

> Hello,
>
> Thanks for your answers.
>
> I will look to semantic highlighting.
> The purpose seems to fit my needs: syntax highlighting, symbol detection,
> ... each time a file is opened or modified.
>
> @Nikolai the lex file works with at most 4/5 states and was not made to
> work line by line. Modifying it in this direction will not help me to stick
> closer to the language when new features will come. I will have to make too
> many updates to my lex file each time the one's coming with the language is
> updated.
>
> Thanks again.
>
> Jeremy
>
> Le 23 nov. 2017 09:19, "Nikolai Kosjar" <nikolai.kosjar at qt.io> a écrit :
>
>> On 11/23/2017 07:29 AM, JeremY Larrieu wrote:
>>
>>> Hello,
>>>
>>> I'm working on making a plugin to support a specific language: Anubis.
>>>
>>> I've started the highlighting part and I saw that QtCreator is making
>>> syntax highlighting line by line instead of making it "globally" for the
>>> whole file.
>>>
>>> I just wanna know, how can I use the Bison/Flex files, used to check
>>> syntax for Anubis language, to make syntax highlighting in QtCreator.
>>> Knowing that most of the tokens declared in the Flex file can be
>>> multiline, making a lexer, working line by line, able to detect those
>>> tokens is hard and the code is too "verbose".
>>>
>>> I've tried to adapt what I've found in Bison/Flex files to make a syntax
>>> highlighter, but it's really painful and it makes further updates harder.
>>> If I was able to apply highlighting on the whole file (not line by
>>> line), it were simpler and I could use it to make some other
>>> functionalities at the same time: code completion, code analysis, symbol
>>> detection, ...
>>>
>>> Do you have an idea on how I can make syntax highlighting without
>>> rewriting a full lexer ?
>>>
>>> Thanks in advance.
>>>
>>> Jeremy
>>>
>>
>> Hi!
>>
>> I guess you've found TextEditor::SyntaxHighlighter, which does the line
>> by line highlighting with highlightBlock(). For C++ and multi-line tokens
>> (e.g. C comments) we call our custom lexer for the current line with the
>> lexer state from the line before. If flex provides such a state based
>> yylex() equivalent, this might work.
>>
>> The alternative is to use SemanticHighlighter::increment
>> alApplyExtraAdditionalFormats(). With this one, you can for example
>> start parsing in a worker thread and provide the highlighting information
>> as a stream of TextEditor::HighlightingResult items.
>>
>> Nikolai
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qt-creator/attachments/20171123/32777eca/attachment.html>


More information about the Qt-creator mailing list