<div dir="ltr"><div>Doing something a bit different and still figuring all this out myself, but thus far I've reached the following front-end-relevant conclusions:</div><div><br></div><div><a href="http://llvm.org/docs/ProgrammersManual.html">http://llvm.org/docs/ProgrammersManual.html</a> is a good starting point; it discusses a number of useful facilities and guidelines.<br></div><div><br></div><div>Read source files with MemoryBuffer::getFileOrSTDIN(Filename)</div><div><br></div><div>Write a recursive descent parser for your language by hand; in my experience, other ways of doing parsers are not worth the added complexity.<br></div><div><br></div><div><div>The clang way of reporting error messages is nice from the user's perspective, and probably worth trying to pick up. Not sure how to do that yet but <a href="http://clang.llvm.org/doxygen/classclang_1_1SourceLocation.html">http://clang.llvm.org/doxygen/classclang_1_1SourceLocation.html</a> seems potentially relevant.</div><div><br></div><div>In my opinion, an automatic formatting tool is an essential productivity tool nowadays. If the syntax of your language is at all similar to the C family, consider forking clang-format.</div></div><div><br></div><div>For how to run optimisation passes, ignore what the tutorial says about that and look instead at opt.cpp<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 18, 2015 at 6:36 AM, Joachim Durchholz via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</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'm starting work on a new language (not going to make excuses for that), and my initial plan was to use LLVM as backend.<br>
<br>
Looking at the Kaleidoscope tutorial, I found that LLVM-as-backend makes no attempt at supporting the frontend side (d'oh); in particular, it doesn't offern patterns or best practices for organizing things like input stream handling, line/column number bookkeeping, or error message generation.<br>
<br>
Would it make sense to turn to clang for that?<br>
If yes, where should I start reading?<br>
<br>
Regards,<br>
Jo<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>