<div dir="ltr">Do you have a suggestion for an alternate Groovy parser to use if we cannot use groovy eclipse?<div><br></div><div style>Also, even if we do, this should not (unless the Eclipse JDT does some *really bad* things), be a problem because it will be loaded in an isolated classloader.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 13, 2013 at 12:55 PM, Max Rydahl Andersen <span dir="ltr"><<a href="mailto:manderse@redhat.com" target="_blank">manderse@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Just a warning about using groovy eclipse plugin - it historically have had a dependency<br>
on a patched Eclipse JDT meaning it's not installable on just any eclipse version.<br>
<br>
I would hope if you just need a groovy parser that you don't have a depenency on Eclipse JDT for that<br>
- but if you do then that might become tricky (might also be osgi dependencies to deal with, but<br>
that is another concern ;)<br>
<br>
If the dependency will be included into eclipse as a forge loaded lib we might avoid it all - but<br>
since forge itself also have a dependency on JDT it is something to keep an eye on for possible<br>
version mismatches.<br>
<span class="HOEnZb"><font color="#888888"><br>
/max<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Sun, May 12, 2013 at 06:00:20PM +0200, Adam Wyłuda wrote:<br>
>Hi Lincoln!<br>
>Thank you for your response, it's nice to hear that my proposal is rated<br>
>positively.<br>
><br>
>I first thought that creating our own Groovy parser which works directly on<br>
>Groovy AST would be a good idea because that would give us more<br>
>possibilities than existing solutions, but you are right - there is a risk<br>
>that it might take more time than planned (although basic support could be<br>
>provided which could be sufficient to work on Gradle project files).<br>
><br>
>I have found this paper which gave me some insights on problems related to<br>
>Groovy script parsing and modification:<br>
><a href="http://groovy.ifs.hsr.ch/groovy-refactoring.pdf" target="_blank">http://groovy.ifs.hsr.ch/groovy-refactoring.pdf</a><br>
><br>
>It seems that the biggest issue is how to rewrite code without changing its<br>
>formatting and how to keep comments in code. Groovy AST doesn't contain<br>
>comment nodes so if we want to use pure Groovy AST to parse it, we need to<br>
>include all whitespace and comments in our model, what is possible because<br>
>Groovy AST nodes include position in source information, so we could just<br>
>substring our source between statements, but it's hard because we need to<br>
>check thoroughly every expression as comments can appear between any nodes,<br>
>like this:<br>
>x = y + /* comment */ z<br>
><br>
>So as you said, it's better to use existing solution so we won't reinvent<br>
>the wheel. I think that Groovy Eclipse plugin is the best candidate because<br>
>it's API is similar to JDT plugin used in JavaParser (actually Groovy<br>
>plugin uses JDT and it even seems to be a part of JDT), so it will be more<br>
>convenient for other developers with JavaParser experience to maintain it.<br>
>The are also alternatives like NetBeans or IntelliJ IDEA plugin, but I<br>
>think Eclipse plugin is sufficient enough to work effectively with Groovy<br>
>sources.<br>
><br>
>Like you suggested I updated my proposal to give myself some time to<br>
>understand Groovy Eclipse plugin API and start working on Gradle project<br>
>support earlier.<br>
><br>
>2013/5/7 Lincoln Baxter, III <<a href="mailto:lincolnbaxter@gmail.com">lincolnbaxter@gmail.com</a>><br>
><br>
>> Hey Adam,<br>
>><br>
>> Thank you so much for your proposal! We have reviewed your submission and<br>
>> so far all the mentors have given it a high rating :)<br>
>><br>
>> I took a look at your prototype groovy-manager project, which looks very<br>
>> interesting. You are doing source parsing for groovy, which is pretty<br>
>> challenging.<br>
>><br>
>> While writing a parser from scratch can be a thrilling challenge, I have<br>
>> to say that it can be quite a burden! We started writing our own<br>
>> Java-parser for Forge, but quickly came to find that even parsing a<br>
>> type-safe language is incredibly difficult.<br>
>><br>
>> We ended up using the Eclipse JDT as a base implementation for our<br>
>> JavaParser.<br>
>><br>
>> Have you looked for any Groovy parsers that may already exist today? This<br>
>> would give you a quick boost when working on this project. It may be the<br>
>> case that the parser would require some usability improvements to make<br>
>> integration with Forge simpler, and simpler for plugin devs, but I think it<br>
>> is safe to say that a search for existing parsers is warranted.<br>
>><br>
>> If a suitable parser can be found, I would suggest that we revise your<br>
>> proposal to allow for several weeks to become familiar with that parser,<br>
>> and then allocate the rest of the time to actually working with it to<br>
>> implement the gradle support.<br>
>><br>
>> I'd suggest starting here, with the Groovy Eclipse Plugin - they almost<br>
>> certainly already support groovy syntax:<br>
>> <a href="http://groovy.codehaus.org/Eclipse+Plugin#EclipsePlugin-KeyFeatures" target="_blank">http://groovy.codehaus.org/Eclipse+Plugin#EclipsePlugin-KeyFeatures</a><br>
>><br>
>> The problem with writing your own parser is that you have to maintain it<br>
>> :) Better to delegate.<br>
>><br>
>> ~Lincoln<br>
>><br>
>><br>
>><br>
>><br>
>> On Sun, May 5, 2013 at 5:05 PM, Adam Wyłuda <<a href="mailto:adamwyl92@gmail.com">adamwyl92@gmail.com</a>> wrote:<br>
>><br>
>>> Hello JBoss community,<br>
>>> This year I want to participate in an OS project and GSoC gives me great<br>
>>> opportunity to do so.<br>
>>> Here is my idea as GSoC 2013 proposal:<br>
>>> <a href="http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/adamw/1" target="_blank">http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/adamw/1</a><br>
>>> I'd be very happy to hear your opinions (I hope it's not too late).<br>
>>><br>
>>> _______________________________________________<br>
>>> forge-dev mailing list<br>
>>> <a href="mailto:forge-dev@lists.jboss.org">forge-dev@lists.jboss.org</a><br>
>>> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
>>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Lincoln Baxter, III<br>
>> <a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>
>> "Simpler is better."<br>
>><br>
>> _______________________________________________<br>
>> forge-dev mailing list<br>
>> <a href="mailto:forge-dev@lists.jboss.org">forge-dev@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
>><br>
<br>
>_______________________________________________<br>
>forge-dev mailing list<br>
><a href="mailto:forge-dev@lists.jboss.org">forge-dev@lists.jboss.org</a><br>
><a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
<br>
_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Lincoln Baxter, III<br>
<a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>"Simpler is better."
</div>