<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 30, 2014 at 2:08 PM, Daniel Jasper <span dir="ltr"><<a href="mailto:djasper@google.com" target="_blank">djasper@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div class="">On Wed, Jul 30, 2014 at 8:13 PM, Sean Silva <span dir="ltr"><<a href="mailto:chisophugis@gmail.com" target="_blank">chisophugis@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div>On Wed, Jul 30, 2014 at 11:28 AM, Johannes Kapfhammer <span dir="ltr"><<a href="mailto:kapf@student.ethz.ch" target="_blank">kapf@student.ethz.ch</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I am working on a Google Summer of Code project to use the clang lexer for<br>
syntax highlighting.  The intended usage is to highlight C++ for LaTeX<br>
(papers, presentations), HTML (documentations, wikis) and other formats.<br>
My goal is to provide a better alternative to Pygments (which highlights C++<br>
on the <a href="http://llvm.org" target="_blank">llvm.org</a> docs) or GNU Source-highlight.  These tools can identify<br>
keywords perfectly well, but aren't able to highlight types and functions.<br>
<br>
To correctly highlight those source snippets, I wrote a fuzzy parser library on<br>
top of the clang lexer.  The clang parser cannot be used for this as snippets<br>
don't need to be self-contained, e.g. use types or functions which definitions<br>
aren't included.<br>
<br>
The fuzzy parser doesn't understand all language constructs of C++, but enough<br>
to produce a reasonably good highlighting.  A sample output produced with<br>
LaTeX an be found on github [1] (136 KB).  There's also more documentation<br>
about clang-highlight [2] and the fuzzy parser [3].<br>
<br>
I submitted my work for review on phabricator [4] to get it into<br>
clang/tools/extra.<br>
<br>
The fuzzy parser is a general library that may have some other potential uses<br>
beside clang-highlight.  clang-format internally has a similar fuzzy parser<br>
and is currently more complete, but not written in a reusable way.<br></blockquote><div><br></div></div><div>Have you tried talking to the clang-format authors about making this code more reusable? I think a reusable "fuzzy parser" would be quite generally useful.</div>


<div><br></div><div>Realistically speaking I doubt (purely from a maintenance perspective) that we will ever have 2 fuzzy parsers in-tree so evolving the clang-format parser seems like the natural path forward for this sort of work.</div>

</div></div></div></blockquote><div><br></div></div><div>Yes he has and I did mentor his project.</div></div></div></div></blockquote><div><br></div><div>Ah. I'm surprised that there hasn't been more (any?) on-list traffic about this; usually we at least have an RFC (and doesn't GSoC require one?). Did a GSoC proposal ever make it to the list?</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> I generally agree that we don't want to have 2 fuzzy parsers, but at this stage, clang-format's parser is to intricately tangled with clang-format itself. A fresh start seems like the most promising approach to me, taking some of the learnings of clang-format's parser and putting them into a reusable library. If successful, we'll be able to switch clang-format over to that parser and simplify clang-format's implementation.</div>
</div></div></div></blockquote><div><br></div><div>Neat. That would be great.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div><br></div><div>Also, while clang-format's parser is more complete ins some ways, it has also been highly tuned to extract only the information from the source code that is relevant to formatting. E.g. while it might be essential for highlighting to (somewhat) correctly determine type information, it doesn't matter for source code formatting at several places. Thus, I am not sure whether clang-format's current parser can really be reused/extended for other applications.</div>
<div class="">
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><font color="#888888">
<div><br></div><div>-- Sean Silva</div></font></span><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another possible use would be for an auto complete system for editors.<br>
<br>
Any opinions or suggestions about this project?<br>
<br>
Best,<br>
Johannes<br>
<br>
  1 : <a href="https://github.com/kapf/clang-highlight/blob/master/latex/fuzzyparser.pdf?raw=true" target="_blank">https://github.com/kapf/clang-highlight/blob/master/latex/fuzzyparser.pdf?raw=true</a><br>

  2 : <a href="https://github.com/kapf/clang-highlight/blob/master/docs/clang-highlight.rst" target="_blank">https://github.com/kapf/clang-highlight/blob/master/docs/clang-highlight.rst</a><br>
  3 : <a href="https://github.com/kapf/clang-highlight/blob/master/docs/LibFuzzy.rst" target="_blank">https://github.com/kapf/clang-highlight/blob/master/docs/LibFuzzy.rst</a><br>
  4 : <a href="http://reviews.llvm.org/D4725" target="_blank">http://reviews.llvm.org/D4725</a><br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div><br></div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div></div><br></div></div>
</blockquote></div><br></div></div>